有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java c#HttpClient将文件上载到spring rest服务

问题: 我有一个Java spring rest服务来上传文件(大尺寸)。 我想用一把。NET httpClient(或其他.NET客户端)调用上载服务

问题:

  1. 似乎发送大文件的最佳选择是多部分文件,那么互操作性是什么呢
  2. 如果不可能,最好的选择是什么

谢谢!


共 (3) 个答案

  1. # 1 楼答案

    答案如下: 我可以将带有多部分附件的文件从c#客户端发送到Java JAX Rest Webservice

     try
            {
                using (
                var client = new HttpClient())
                using (var form = new MultipartFormDataContent())
                {
                    using (var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) {
                        using (var fileContent = new StreamContent(stream)) {
    
                            fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") {FileName = fileName, DispositionType = DispositionTypeNames.Attachment, Name = "fileData"};
    
                            form.Add(fileContent);
                            // only for test purposes, for stable environment, use ApiRequest class.
                            response = client.PostAsync(url, form).Result;
                        }
                    }
                }
    
                return response.RequestMessage != null ? response.ReasonPhrase : null;
            }
            catch (Exception ex)
            {
                TraceManager.TraceError("Post Asyn Request to " + url + " \n" + ex.Message, ex);
                throw;
            }
    
  2. # 2 楼答案

    HTTP是一个独立于操作系统平台和编程语言的标准,因此在您的情况下,互操作性不应该有任何问题。net客户端符合这些标准

  3. # 3 楼答案

    java spring boot

    @RequestMapping(value="/upload", method=RequestMethod.POST)
    public @ResponseBody String upload(@RequestParam("FileParam") MultipartFile file){
        InputStream fromClient=file.getInputStream();
        ...do stuff with the database/ process the input file...
    

    #

    HttpClient client = new HttpClient();
    MultipartFormDataContent form = new MultipartFormDataContent();
    FileInfo file = new FileInfo(@"<file path>");
    form.Add(new StreamContent(file.OpenRead()),"FileParam",file.Name);
    HttpResponseMessage response = await client.PostAsync("http://<host>:<port>/upload", form);
    Console.WriteLine(response.StatusCode);
    Console.WriteLine(response.ReasonPhrase);
    Console.WriteLine(response.ToString());
    Console.WriteLine(Encoding.ASCII.GetString(await response.Content.ReadAsByteArrayAsync()));