使用下面的API和输入,将使用multipart / form请求,但是由于RequestPart("files"
,对于所有文件,键都是静态的“文件”),但是由于Map<String,String>
,所有String的键都是动态的。 / p>
@PostMapping(value = "/xyz", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> uploads(@RequestPart("files") MultipartFile[] outputFiles, @RequestParam Map<String, String> keyValues {
...
}
files - file_1_name
files - file_2_name
files - file_3_name
key1 - value1
key2 - value2
但是,以下API不能正常工作。需要为每个上传的文件提供动态密钥,并且尚不知道要上传的文件总数,因此请使用Map<String, MultipartFile
>代替MultipartFile[]
。仍然希望每个上传的文件都有静态键“ outputFiles”。
@PostMapping(value = "/xyz", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> uploads(@RequestPart Map<String, MultipartFile> outputFiles, @RequestParam Map<String, String> keyValues {
...
}
Input
======
file_1_name - file_1_any_name
file_2_name - file_2_any_name
file_3_name - file_3_any_name
key1 - value1
key2 - value2
我们是否可以使用类似于Map<String, MultipartFile>
的spring boot / spring mvc支持动态密钥,例如file_name_1,file_name_2(如上所示)用于像Map<String,String>
这样的文件上传?
答案 0 :(得分:1)
接受MultipartHttpServletRequest request
作为控制器的参数也允许动态键用于多部分/表单文件上传。
request.getParameterMap()
request.getFileMap()