我在spring boot中编写了一个restful web服务来接收文件。
@RequestMapping(value = "/upload", method = RequestMethod.POST)
@ResponseBody
public void uploadFile(@RequestParam("file") MultipartFile uploadfile) {
System.out.println("filename: " + uploadfile.getName());
}
如何将文件从客户端java代码上传到web服务。而不是AJAX调用或HTML页面表单多部分请求?
下面的代码使用JSON对象调用web服务。像这样,我想在上面写的web服务中接收文件。
void clientRequest(String server_url, JSONObject fileObj){
try {
URL url = new URL(server_url);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
OutputStream os = conn.getOutputStream();
os.write(fileObj.toString().getBytes());
os.flush();
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
logger.info("output :: " + output);
}
conn.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
如果要使用多部分文件
,则在请求时必须使用多部分/表单数据
mimetype。不应将JSON作为请求实体发送,而应使用单个字段文件
构建一个特定的多部分实体。
这是如何做到的:如何使用Java进行多部分/表单数据POST请求?
您可以使用Spring的HttpEntity
和ByteArrayResource
来上传文件,下面是一个例子:
MultiValueMap<String, Object> data = new LinkedMultiValueMap<String, Object>();
ByteArrayResource resource = new ByteArrayResource(file.getBytes()) {
@Override
public String getFilename() {
return file.getName();
}
};
data.add("file", resource);
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<MultiValueMap<String, Object>>(data, requestHeaders);
final ResponseEntity<<SomeClass>> responseEntity = restTemplate.exchange(<url>,
HttpMethod.POST, requestEntity, new ParameterizedTypeReference<SomeClass>(){});
SomeClass result = responseEntity.getBody();
本文向大家介绍Java下http下载文件客户端和上传文件客户端实例代码,包括了Java下http下载文件客户端和上传文件客户端实例代码的使用技巧和注意事项,需要的朋友参考一下 一、下载客户端代码 上述代码只适合下载小文件,如果下载大文件则会出现 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 错误,所以
我正在Spring controller中努力实现多部分文件上传。我读过很多问题,谷歌,但似乎什么都不管用。 我明白了 我的BE控制器: FE,angularJS: HTML: 还有应用程序。属性包括: 更新: 当我按照@Byeon0gam的建议从我的控制器中删除@RequestParam时,我不再会遇到这个错误,但是我的文件在控制器中是空的。虽然在FE服务中,如我所见,它不是空的:
我使用的是Jersey 2.28,想要编写一个客户端来上传1Gb的文件,而客户端JVM堆不能超过256Mb。 我在这里有什么选择? 我试着用下面的代码片段,但结果是OOM,因为Jersey似乎一直在尽可能多地从InputStream中读取数据。为了处理大量输入,可以指示球衣进行冲洗吗?
我正在尝试使用Faign client上传多个多部分文件,但我无法这样做。 经过一些研究,文件上传使用Faign-多部分/表单数据 文件上传spring云虚拟客户端 数组Multipart[]文件上传使用FIGN客户端 客户端: 我正在尝试访问的模块: 上面的工程罚款为一个单一的Multipart文件,但它显示以下错误为多个文件: Servlet.service()为servlet[调度Servl
我想上传一个图像到文件系统。所以我用spring-boot上传多部分文件。我还使用Advance Rest Client(Chrome)工具来Multi-part文件。但即使我没有指定任何内容类型org.apache.tomcat.util.http.fileupload,我也面临一个错误。FileUploadException:请求被拒绝,因为找不到多部分边界。 这是我的Rest控制器代码, 屏
我正在使用Perl的REST::Client发出多部分POST请求: REST API 如下所示: 当我运行脚本时,出现以下错误: 解析多部分servlet请求失败;嵌套异常java.io.IOException:org.apache.tomcat.util.http.fileupload.FileUploadException:请求被拒绝,因为没有找到多部分边界] 我是perl新手,语法或其他方