首页 > 解决方案 > 使用不同键的多个 Multipart 静态调用

问题描述

我正在尝试使用in调用POST服务multipart form-data@RequestPartSpringBoot

下面是与多个工作正常的代码@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)上传多个文件。

有什么建议吗?请帮忙。

标签: javarestspring-bootmultipartform-data

解决方案


我有一个解决方案,请检查@ModelAttributeSpring-boot请检查下面的示例

使用 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 并使用 MULTIPART_FORM_DATA_VALUE 使用您的 HTTP 发布 请求

@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);
   }
}    

你可以参考这个链接示例@ModelAttributewith spring-bootwithangular

希望它对你有用


推荐阅读