首页 > 解决方案 > 如何从 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中接收多个文件

标签: androidspring-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;
}

推荐阅读