使用分段文件上传处理动态密钥

时间:2018-07-30 13:22:15

标签: java spring spring-mvc spring-boot

使用下面的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>这样的文件上传?

1 个答案:

答案 0 :(得分:1)

接受MultipartHttpServletRequest request作为控制器的参数也允许动态键用于多部分/表单文件上传。

request.getParameterMap()
request.getFileMap()