Multipart file upload client is capable of uploading different kind of files to RESTFul web service using Jersey framework.
1. What is objective of Multipart file Upload client using jersey ?
- File upload client using “multipart/mixed” mime type.
- We have upload the following file formats to be RESTFul web service
- JPG
- JSON
- zip
We have discussed RESTFul multipart web service using spring framework. We have tested the Multipart file upload client with RESTFul multipart web service . We can download the web service project from above link, to check the end to end flow of applications.
We have used “http://localhost:9095/multipart/file/upload” (we will discuss shortly) to upload files to web service. Where “/multipart” defines the context path, where web service is is being deployed. We can change the above url as per our web service deployment.
2. Jersey client maven dependencies:
<dependencies> <dependency> <groupId>org.glassfish.jersey.media</groupId> <artifactId>jersey-media-multipart</artifactId> <version>${jersey_version}</version> </dependency> <dependency> <groupId>org.glassfish.jersey.core</groupId> <artifactId>jersey-client</artifactId> <version>${jersey_version}</version> </dependency> </dependencies>
3. Multipart file upload Jersey client – RESTFul web service example (java)
3.1.) Application class:
The application class contains the main function. Application class performing following operations:
- Create the different file resource, which we will send to RESTFul web service (linked shown earlier).
- We are uploading following files format.
- JPG
- JSON
- RAR (zip format)
- We are calling JerseyFileUpload.uploadFiles method to upload files files.
- We have “http://localhost:9095/multipart/file/upload” of RESTFul web service to upload files.
import java.io.File; public class Application { public static void main(String[] args) { try { String url = "http://localhost:9095/multipart/file/upload"; File imgFile = new File("src/main/resource/img.jpg"); File pdfFile = new File("src/main/resource/SamplePdf.pdf"); File jsonFile = new File("src/main/resource/Organization.json"); File zipFile = new File("src/main/resource/SoftwareData.rar"); JerseyFileUpload.postFile(url,imgFile,pdfFile,jsonFile,zipFile); } catch (Exception e) { e.printStackTrace(); } } }
3.2.) JerseyFileUpload class:
JerseyFileUpload class is responsible for uploading multipart contents to REST web service.
- Create a client with MultiPartFeature enabled.
- Add multi part contents like pdf, image, text etc to multipart object.
- Execute post request to invoke RESTFul resource.
- Parse the response and display the execution result.
package org.learn.FileUpload; import java.io.File; import java.io.IOException; import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.Entity; import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.glassfish.jersey.media.multipart.MultiPart; import org.glassfish.jersey.media.multipart.MultiPartFeature; import org.glassfish.jersey.media.multipart.file.FileDataBodyPart; public class JerseyFileUpload { private final static String contentType = "multipart/mixed"; public static void postFile(String serverURL, File imgFile, File pdfFile, File jsonFile, File zipFile) { MultiPart multiPart = null; try { Client client = ClientBuilder.newBuilder(). register(MultiPartFeature.class).build(); WebTarget server = client.target(serverURL); multiPart = new MultiPart(); FileDataBodyPart pdfBodyPart = new FileDataBodyPart("pdfFile", pdfFile, MediaType.APPLICATION_OCTET_STREAM_TYPE); FileDataBodyPart imgBodyPart = new FileDataBodyPart("imgFile", imgFile, MediaType.APPLICATION_OCTET_STREAM_TYPE); FileDataBodyPart jsonBodyPart = new FileDataBodyPart("jsonFile", jsonFile, MediaType.APPLICATION_OCTET_STREAM_TYPE); FileDataBodyPart zipBodyPart = new FileDataBodyPart("zipFile", zipFile, MediaType.APPLICATION_OCTET_STREAM_TYPE); // Add body part multiPart.bodyPart(pdfBodyPart); multiPart.bodyPart(imgBodyPart); multiPart.bodyPart(jsonBodyPart); multiPart.bodyPart(zipBodyPart); Response response = server.request(MediaType.APPLICATION_JSON_TYPE) .post(Entity.entity(multiPart, contentType)); if (response.getStatus() == 200) { String respnse = response.readEntity(String.class); System.out.println(respnse); } else { System.out.println("Response is not ok"); } } catch (Exception e) { System.out.println("Exception has occured "+ e.getMessage()); } finally { if (null != multiPart) { try { multiPart.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }
4. O/P: Jersey multipart file upload client -RESTFul web service (example)
uploaded files :[img.jpg, SamplePdf.pdf, Organization.json, SoftwareData.rar]