如何在Spring MVC REST控制器中接受多个多部分文件

时间:2018-05-28 07:02:04

标签: spring-mvc

我有一个接受多部分文件的Spring MVC REST控制器,如下所示:

@Consumes(MediaType.MULTIPART_FORM_DATA)
@RequestMapping(value = "/save-comment", method = RequestMethod.POST)
public String addComment(@FormDataParam("jsonData") String jsonData, @FormDataParam("file") MultipartFile file, ModelMap model)
{
    //My Logic to save file and data
}

我在我的应用程序中使用Jersey REST客户端。上面的代码对我来说很好。现在我正在尝试将多个文件POST到我的REST控制器。

我尝试将@FormDataParam("file") MultipartFile file更改为@FormDataParam("file") MultipartFile[] file,但这对我不起作用。如何一次将多个文件传递给REST控制器?

我得到的例外是:嵌套异常是

org.springframework.beans.BeanInstantiationException: Failed to instantiate [[Lorg.springframework.web.multipart.MultipartFile;]: No default constructor found; nested exception is java.lang.NoSuchMethodException: [Lorg.springframework.web.multipart.MultipartFile;.<init>()] with root cause
java.lang.NoSuchMethodException: [Lorg.springframework.web.multipart.MultipartFile;.<init>()

2 个答案:

答案 0 :(得分:1)

只需对如下所示的多部分请求进行正常的http请求:

try {
            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) httpServletRequest;
            List<MultipartFile> multipartFileList = multipartRequest
                    .getFiles("images");

            if (null != multipartFileList && !multipartFileList.isEmpty()) {

                for (MultipartFile file : multipartFileList) {
                    String fileName = file.getOriginalFilename().trim();
                    if (file.getBytes().length > 0) {
                        // logic goes gere
                    }

                }
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }

答案 1 :(得分:1)

多文件上传概念,我们可以使用MultipartFile Interface来处理。

包装: org.springframework.web.mutipart 公共接口MutipartFile

MutipartFile是一个接口,Commonly Client将发送或上传文件,它将以多部分请求的形式发送到服务器。

我们将使用MutipartFile Concept捕获该多部分请求。这个MutipartFile接口有很多方法,这些方法用于获取该文件的信息,如果你想复制或移动文件,我们也可以通过一个名为transferTo(“destinationPath”)的方法执行;

为了更好地理解目的,请访问https://walkintoknow.blogspot.com/2018/05/multiple-files-upload-concept-handling.html

 @RequestMapping(value="/multipleFilesUpload" , method=RequestMethod.POST, 
consumes="multipart/form-data", produces="application/json")  
public ResponseEntity<?> mutipleFileUpload(HttpServletRequest req, 

@RequestParam(value="file" , required = false) MultipartFile[] files) throws IOException{

for (MultipartFile file : files) {
 File f= new File(getPath()+createFolderInDesc("/appFiles /GSTC/mutipleUpload/"),file.getOriginalFilename());
   try {
        file.transferTo(f); //Transfer or Saving in local memory 
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
                e.printStackTrace();
            }
        }


    return null;
} 

如果有帮助请升级。