android - 如何从 Retrofit API 接收多部分请求
问题描述
我在服务器端使用 Spring-rest。在这里,我正在处理来自 android 应用程序的请求。但是,我无法接收从 android 应用上传的多部分文件。android 应用开发者以 List 的形式发送多个文件。为了在服务器端接收该请求,我使用了下面的代码。
@RequestMapping(value="/multipleFilesUpload" , method=RequestMethod.POST,
consumes="multipart/form-data", produces="application/json")
public ResponseEntity<?> mutipleFileUpload(HttpServletRequest req,
@RequestParam(value="files" , required = false) List<MultipartFile> files,
@RequestParam("desc") String desc) throws IOException{
System.out.println("Hits::"+desc);
for (int i = 0; i < files.size(); i++) {
System.out.println(files.get(i).getOriginalFilename());
}
return null;
}
但是,我得到了空列表。请给一个建议如何在spring-rest中接收多个文件
解决方案
由于它是一个multipart/form-data
然后方法参数应该@RequestPart
不是@RequestParam
,并且您的方法可能如下所示,其中 MultiPart 文件列表将进入@RequestPart(value="files" , required = false) MultipartFile... files
并且@RequestPart("desc") String desc
将是有效负载的 JSON 部分。
@RequestMapping(value="/multipleFilesUpload" , method=RequestMethod.POST,
consumes="multipart/form-data", produces="application/json")
public ResponseEntity<?> mutipleFileUpload(HttpServletRequest req,
@RequestPart(value="files" , required = false) MultipartFile... files,
@RequestPart("desc") String desc) throws IOException{
System.out.println("Hits::"+desc);
List<MultipartFile> fileList = Arrays.asList(files);
for (int i = 0; i < fileList.size(); i++) {
System.out.println(fileList.get(i).getOriginalFilename());
}
return null;
}
推荐阅读
- java - 带有巨大 BufferdImage 的小型 pdf 文件结果
- python - 如何在 Keras 中使用 deconv2d 获得与原始输入大小相同的层?
- javascript - 我可以一次跟踪输入字段的文本更改,而不是每次输入吗?
- socket.io - angular Universal + socket.io,如何正确等待浏览器端?
- javascript - Heroku 托管网站 - 非工作 JavaScript
- windows - Tortoise SVN - 菜单项未显示
- python - 在nestedExpr pyparsing中转义空格
- python - Python 如何在一个 file.txt 中写入 5 行,在新的 file1.txt 中写入另外 3 行,例如 +=1
- mysql - 在 MySql 中存储完全相同的小数点
- javascript - 角度通用 ReferenceError 导航器未定义