@RequestParam上传多个文件需要后端和前端共享的文件名

时间:2018-06-29 05:55:41

标签: java spring-mvc file-upload http-request-parameters

在我重构了后端,重命名,即前端的文件数组名称(从filesmultiFileArr)之后,遇到了一个奇怪的情况无法再上传文件

@PostMapping("/upload/")
public void uploadAnalyzeAndCompare(@RequestParam MultipartFile[] multiFileArr) 
// renamed parameter: @RequestParam MultipartFile[] files  
// from `files` to `multiFileArr`

以及前端上传:

const request = this.state.fileList;
const requestName = 'files';
DumpAction.upload(request, requestName);

还有upload方法:

function upload(request, requestName) {
  const formData = new window.FormData();
  request.map((item) => {
    formData.append(requestName, item);
  });
  return () =>
    fetch(`${ENDPOINT}/upload/`,
      {
        method: 'POST',
        body: formData,
        enctype: 'multipart/form-data',
      }).then(response => response.json())
    ;
}

最后,我发现 font-end 使用的是旧/旧名称files,从而导致了此事件。

我检查了一些基本教程,将文件上传到基于Spring的系统:Spring MVC file upload – single and Multiple files uploadFile Upload with Spring MVC

一种默认惯例,后端和前端中使用的名称应仅为该名称。

我想知道这难道不是那么紧密吗?我们有什么办法可以避免名称一致性限制

类似于@PathVariable

中使用的
@GetMapping("/path/{theName:.+}") // we name it here
public String getId(@PathVariable String theName) {
...
}

或直接指定它:

@GetMapping(value="/user/{userId}")
public String getUserName(@PathVariable("userId") int id) {
...
}

这两种情况都不需要font-end的限制。我们可以在files的上传过程中达到类似的效果吗?

我重构了代码,导致出现糟糕的情况,即我们的服务无法在几天内不支持任何上传。

任何帮助将不胜感激,谢谢〜

0 个答案:

没有答案