Saturday, June 23, 2018

How to upload a file to the server using Servlet technology

Note: 

1. Before using this code download commons-io.jar and commons-fileupload.jar files from the given link 

for commons-io  =>>  https://commons.apache.org/proper/commons-io/
for commons-file-upload =>> https://commons.apache.org/proper/commons-fileupload/

2. Create a Dynamic-Web-Project in Eclipse IDE and copy and paste those uploaded files inside 'lib' folder (lib folder is present inside 'WEB-INF' folder, which is inside 'Web Content' folder). 

2. Create a directory named as "uploaded-files" inside C: drive. In this directory the servlet will store the uploaded files of client.

3. Create index.html inside 'Web Content' folder and copy the given code inside this file

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<fieldset>
<legend>file upload</legend>
<form action="upload-file" method="post" enctype="multipart/form-data">
<input type="file" name="myfile"><br>
<input type="submit" value="upload file to server">
</form>
</fieldset>
</body>
</html>

4. Create a class inside beans package (this class is a servlet) name of file should be Upload.java. In this file copy and paste the given code

package beans;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

// associate a url to this servlet
// the client can access this servlet using url => 'upload-file'
@WebServlet("/upload-file")
public class Upload extends HttpServlet
{
@Override
protected void service(HttpServletRequest request, 
HttpServletResponse response) 
throws ServletException, IOException 
{
try {
response.setContentType("text/html");

PrintWriter pw = response.getWriter();

// check if request is having multi-part data 
if(ServletFileUpload.
isMultipartContent(request))
{
// create object of disk-file-item-factory class
DiskFileItemFactory factory = new 
DiskFileItemFactory();

// create object of servlet-file-upload class 
// and associate it with disk-file-item-factory 
ServletFileUpload sfu = new 
ServletFileUpload
(factory);

// parse the request into a list of file-item
List<FileItem> items = sfu.
parseRequest(request);

// fetch a file-item from the list
// available at index#0
FileItem item = items.get(0);

// get the name of uploaded file
String filename = item.getName();

// create a path in which uploaded files will be stored
// here, uploaded files will be stored inside c:/server-files
// directory
String filepath = "c:/uploaded-files/"+
filename;

// denote this path using file class
File file = new File(filepath);

// store the data of uploaded file inside the given path
item.write(file);
}
else // if request does not contain multipart data 
{
pw.println("<i style='color : red'>"
+ "form does not have multipart data");
pw.println("<a href=index.html>retry</a></i>");
}

catch (Exception e) 
{
e.printStackTrace();
}
}

}




4 comments: