Reputation: 374
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
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