【问题标题】:How do you handle the HttpUrlConnection on server side?你如何处理服务器端的 HttpUrlConnection ?
【发布时间】:2017-07-17 14:43:32
【问题描述】:

我正在尝试通过 HttpUrlConnection 方法发送文件。

   URL url = new URL(SERVER_URL);
                connection = (HttpURLConnection) url.openConnection();
                connection.setDoInput(true);//Allow Inputs
                connection.setDoOutput(true);//Allow Outputs
                connection.setUseCaches(false);//Don't use a cached Copy
                connection.setRequestMethod("POST");
                connection.setRequestProperty("Connection", "Keep-Alive");
                connection.setRequestProperty("ENCTYPE", "multipart/form-data");
                connection.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
                connection.setRequestProperty("uploaded_file",selectedFilePath);

使用 dataOutputStream 发送文件。

 dataOutputStream.writeBytes(lineEnd);
                dataOutputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

但不确定如何在服务器端处理这个 HttlUrlConnection 和 fileoutputstream。

我不确定我做的是否正确,但我试图获取输入流 简单的请求映射。这是我的服务器端。

  @RequestMapping(value="/fileUploadPage")
   public String fileUpload(@Validated FileModel file, BindingResult result, ModelMap model,HttpServletRequest req) throws IOException {

      How to handle 'httpUrlconnection outputstream' in here?


}

【问题讨论】:

  • 没有ENCTYPE 标头。
  • 你用什么语言开发服务器端??在 php 中,您可以使用 $_FILE 访问多部分数据
  • 是否可以只使用@Requestmapping 处理文件输出流?

标签: java file http httpurlconnection dataoutputstream


【解决方案1】:

您问题中的代码 sn-p 表明您正在使用 spring。 Spring 支持多部分文件上传,请查看documentation。配置MultipartResolver后,可以这样做:

@PostMapping("/form")
public String handleFormUpload(@RequestParam("name") String name,
        @RequestParam("file") MultipartFile file) {

    if (!file.isEmpty()) {
        byte[] bytes = file.getBytes();
        // store the bytes somewhere
        return "redirect:uploadSuccess";
    }

    return "redirect:uploadFailure";
}

【讨论】:

  • 在客户端。我正在使用数据输出流。是服务器不必使用输入流吗?
  • Spring 可以为您做到这一点,并为您提供可供使用的MultipartFile,因此您不必处理较低级别的详细信息。
  • 我正在从原生 Android 发送 DataoutputStream。我想在android中仍然使用dataoutputStream来发送图像或文件吗?
  • 服务器不关心或确定传入的字节是否是通过 Android、Visual Basic 或 Haskell 发送的 - 它们看起来都一样。
  • 它不响应 @RequestParam("file") MultipartFile 文件。当我放置@Validated FileModel 文件时,请求映射仅响应
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-09
  • 1970-01-01
  • 1970-01-01
  • 2014-09-24
  • 1970-01-01
  • 2012-11-28
相关资源
最近更新 更多