File Upload with Jersey and Jquery Ajax

Required Jars:
asm-3.1.jar
jackson-core-asl-1.9.2.jar
jackson-jaxrs-1.9.2.jar
jackson-mapper-asl-1.9.2.jar
jackson-xc-1.9.2.jar
jersey-client-1.17.1.jar
jersey-core-1.17.1.jar
jersey-json-1.17.1.jar
jersey-multipart-1.17.1.jar
jersey-server-1.17.1.jar
jersey-servlet-1.17.1.jar
jsr311-api-1.1.1.jar
mimepull-1.6.jar

--------------------------------------------------------------------------------------------------------------------
uploadFile.jsp

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('#uploadFile').change(function () {
console.log(this.files[0]);
var formData = new FormData();
formData.append("file", this.files[0]);
formData.append("name", $('input[type=text]').val());
console.log(formData);
$.ajax({
url: "rest/uploadFile/upload",
type: 'POST',
data: formData,
async: false,
success: function (data) {
alert(data)
},
cache: false,
contentType: false,
processData: false
});
return false;
});
});
</script>
</head>
<body>
<h1>File Upload with Jersey</h1>
<form enctype="multipart/form-data">
<p>Enter Name : <input type="text" name="name"/></p>
<p>
Select a file : <input type="file" name="file" id="uploadFile" size="45" />
</p>
<input type="submit" value="Upload It" />
</form>
</body>
</html>
--------------------------------------------------------------------------------------------------------------------
Web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>RESTfulWS</display-name>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.restjersy</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
--------------------------------------------------------------------------------------------------------------------------
UploadFile.java

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import com.sun.jersey.core.header.FormDataContentDisposition;
import com.sun.jersey.multipart.FormDataParam;
// @Path here defines class level path. Identifies the URI path that
// a resource class will serve requests for.
@Path("uploadFile")
public class UploadFile {

// @POST here defines, this method will process HTTP GET
// requests.
@POST
// @Path here defines method level path. Identifies the URI path that a
// resource class method will serve requests for.
@Path("/upload")
// @Consumes here defines the media type(s) that the methods
// of a resource class can consume.
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail,
@FormDataParam("name") String name) {
String uploadedFileLocation = "d://uploaded/"
+ fileDetail.getFileName();

// save it
writeToFile(uploadedInputStream, uploadedFileLocation);

StringBuffer output = new StringBuffer("Name : " + name);
output.append("</br>File uploaded to : " + uploadedFileLocation);
output.append("</br></br> File Content : "
+ uploadedInputStream.toString());

return Response.status(200).entity(output.toString()).build();
}

// save uploaded file to new location
private void writeToFile(InputStream uploadedInputStream,
String uploadedFileLocation) {
try {
OutputStream out = new FileOutputStream(new File(
uploadedFileLocation));
int read = 0;
byte[] bytes = new byte[1024];
out = new FileOutputStream(new File(uploadedFileLocation));
while ((read = uploadedInputStream.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

Comments

Popular posts from this blog

Edit/Modify existing PDF using Java(iText)

Verify Digital Signature in PDF using Java(iText) and cacerts

Steps to create SOAP Web service using Eclipse