Jaimin Darji
Jaimin Darji

Reputation: 374

Multiple Multipart in rest call with different key

I am trying to call POST service multipart form-data with @RequestPart in SpringBoot

below is code which is working fine with multiple @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);
    }
}

I need to improve my code @RequestPart needs to be a single parameter for upload multiple files with a different key (profileImage and addressImage).

Is there any suggestions? Please help.

Upvotes: 3

Views: 1587

Answers (1)

Harshit Suhagiya
Harshit Suhagiya

Reputation: 96

I have a solution for you please check @ModelAttribute in Spring-boot please check below example

Create class and add data members for all different key parameters with getter setter please refer below example

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...
}

use @ModelAttribute in your rest controller with consume your HTTP post request with 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);
   }
}    

you can refer to this link example of @ModelAttribute with spring-boot with angular

Hope it's work for you

Upvotes: 3

Related Questions