Downloading a file from web application
This post explains developing a web application which allows requestor to download a file. Here web app will have a servlet which streams requested file to requestor. follow the step to develop it using NetBean 6.8
1. Create a web application [ refer previous posts ]
2.Create a Servlet and add the code given below in doGet method
String filePath =null;
int length =0;
//accept file name as parameter
String fileName = request.getParameter("FILE_NAME");
InputStream is = getServletContext().getClassLoader().getResourceAsStream("/"+fileName);
if(is == null){
PrintWriter writer = response.getWriter();
writer.append("<html><body><h1> File "+ fileName +"has not Found</h1></body></html>");
writer.close();
}
//set header information
response.setContentType("application/x-download");
response.setHeader("content-disposition", "attachment;filename=Test_Downlaod.txt");
//Stream file content to response
OutputStream outputStream = response.getOutputStream();
byte[] bbuf = new byte[100];
//DataInputStream in = new DataInputStream(new FileInputStream(filePath));
DataInputStream in = new DataInputStream(is);
while ((in != null) && ((length = in.read(bbuf)) != -1))
{
outputStream.write(bbuf,0,length);
}
This servlet accept file name as request parameter , gets access to file using getClassLoader().getResourceAsStream and streams the content.
Main configuration is setting proper header information of request telling browser that cpntent type is application/x-download and its an attachment.
3. Create file so that it should be present in class path , for this application we are creating sample file under source folder. When we build this application, this file will get copied under classes folder. getClassLoader().getResourceAsStream function looks required file under classes folder.
Final project in Netbean look like as below
4. Running Servlet – Invoke servlet with FILE_NAME=<file_name> as query string like
http://localhost:8080/FileDownloadWebApp/download?FILE_NAME=Test.txt
You will get Save-as pop-up windows
Comments
Post a Comment