Environment:
Spring Boot / Spring Boot Starter Batch Version 1.5.6.RELEASE
Oracle Java 8
1. multipart/form-data POST request with request parameter metadata
curl:
curl -k -H 'Content-Type: multipart/form-data' -F 'docFiles=@test1.txt;type=text/plain' 'https://localhost:8443/cherryshoe-app/document/file/upload/REVIEW?id=3554&docTypeId=1'
-k is to to turn off curl's verification of the self-signed certificate
-F Contents to be read from file use the @
Matching Java Controller Method Signature:
@RequestMapping(value = "/document/
file/upload", consumes = "multipart/form-data", produces = "application/json;charset=utf-8", method = RequestMethod.POST)
@ResponseBody
public DocumentUploadMetadata fileUpload(
@RequestParam(value = "id", required = true) final Long reviewId,
@RequestParam(value = "docTypeId", required = true) final Long docTypeId,
@RequestParam("docFiles") List<MultipartFile> docFiles, Principal principal)
throws IllegalArgumentException, NullPointerException, Exception {
}
2. multipart/form-data POST request with JSON request body metadata
curl:
curl -k -H 'Content-Type: multipart/form-data' -F 'docFiles=@test1.txt;type=text/plain' -F metadata='{"reviewId":3554,"docTypeId":1,"customFileName":"customFileName.txt","commentText":"This is a really long text, it may even be in HTML"};type=application/json' 'https://localhost:8443/cherryshoe-app/document/file/upload'
-k is to to turn off curl's verification of the self-signed certificate
-F Contents to be read from file use the @
Matching Java Controller Method Signature:
@RequestMapping(value = "/document/file/upload", consumes = "multipart/form-data", produces = "application/json;charset=utf-8", method = RequestMethod.POST)
@ResponseBody
public DocumentUploadMetadata fileUpload(@RequestPart("docFiles") List<MultipartFile> docFiles,
@RequestPart("metadata") DocumentUploadMetadata metadata, Principal principal)
throws IllegalArgumentException, NullPointerException, Exception {
}
This Signature also works, had to do this to work with ng-file-upload library:
/**
* Takes a list of document MultipartFile's, and JSON metadata.
*
* NOTE: To make this work with ng-file-upload: - have to pass the JSON
* metadata as a String, and then deserialize the JSON String manually in
* the controller.
*
* @param docFiles
* @param metadata
* @param principal
* @return
* @throws IllegalArgumentException
* @throws NullPointerException
* @throws Exception
*/
@RequestMapping(value = "/document/file/upload", consumes = "multipart/form-data", produces = "application/json;charset=utf-8", method = RequestMethod.POST)
@ResponseBody
public DocumentUploadMetadata fileUpload(@RequestParam("docFiles") List<MultipartFile> docFiles,
@RequestParam("metadata") String metadataJson, Principal principal)
throws IllegalArgumentException, NullPointerException, Exception {
// deserialize metadataJson JSON string manually
}
POJO for JSON metadata serialization/deserialization:
public class DocumentUploadMetadata {
private Long reviewId;
private Long docTypeId;
private String customFileName;
private String commentText;
public DocumentUploadMetadata() {
super();
}
// getters and setters are needed for jackson serialization/deserialization, add them for this to work
}
Helpful curl documentation: https://curl.haxx.se/docs/manual.html
I am feeling great to read this.you gave a nice info for us.please update more.
ReplyDeletePython Training in Chennai
Python Training Institute in Chennai
JAVA Training in Chennai
Hadoop Training in Chennai
Selenium Training in Chennai
Python Training in Chennai
Python Training in Tambaram