使用不同密钥的多个多部分休息呼叫

Multiple Multipart in rest call with different key

我正在尝试在 SpringBoot

中使用 @RequestPart 调用 POST 服务 multipart form-data

下面的代码可以很好地处理多个 @RequestPart

@PostMapping(value = "/saveDetails", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public void saveDetails(@RequestPart("profileImage") MultipartFile profileImage,@RequestPart("addressImage") MultipartFile addressImage, @RequestPart("requestData") String requestData) {
    try {
        if(CommonUtils.isObjectNullOrEmpty(requestData) || CommonUtils.isObjectNullOrEmpty(profileImage) || CommonUtils.isObjectNullOrEmpty(addressImage)){
            logger.warn("Data Should not be null ==>");
        }
        detailSaveService.saveOrUpdateDetails(profileImage, addressImage,requestData);

    } catch (Exception e) {
        logger.error("Error while saving profile Details ==>", e);
    }
}

我需要改进我的代码 @RequestPart 需要是上传的单个参数 具有不同密钥的多个文件(profileImageaddressImage)。

有什么建议吗?请帮忙。

我有一个解决方案,请查看 @ModelAttribute 中的 Spring-boot 请查看以下示例

创建 class 并使用 getter setter 为所有不同的关键参数添加数据成员,请参考下面的示例

class FileUploadRequest  {
   private MultipartFile profileImage;
   private MultipartFile addressImage;
   private MultipartFile[] images; // you can use list or array
   private String requestData; // you can use another pojo or Jsonobject

   // add getter setter here...
}

在您的休息控制器中使用@ModelAttribute,使用您的 HTTP post 请求 MULTIPART_FORM_DATA_VALUE

@PostMapping(value = "/saveDetails", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public void saveDetails(@ModelAttribute FileUploadRequest uploadRequest) {
  try {
      if(CommonUtils.isObjectNullOrEmpty(uploadRequest.getRequestData()) || CommonUtils.isObjectNullOrEmpty(uploadRequest.getProfileImage()) || CommonUtils.isObjectNullOrEmpty(uploadRequest.getAddressImage())){
          logger.warn("Data Should not be null ==>");
      } else {
          detailSaveService.saveOrUpdateDetails(uploadRequest.getProfileImage()), uploadRequest.getAddressImage()),uploadRequest.getRequestData()));
      }

   } catch (Exception e) {
       logger.error("Error while saving profile Details ==>", e);
   }
}    

你可以参考这个link例子 @ModelAttribute with spring-boot with angular

希望对你有用