Sunday, November 23rd, 2014

Display or download Files using servlet

0

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import javax.servlet.ServletException;

import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

* @author name

* This servlet class is used to display or download the file

*

*/

public class DownloadFile extends HttpServlet{

/**

*

*/

private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request, HttpServletResponse response)    throws ServletException, IOException {

doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

ServletOutputStream outputStream = null;

InputStream input = null;

try {

outputStream = response.getOutputStream();

String filePath = request.getParameter(“fileNames”);  //filepath

if(filePath != null && filePath.trim().length()>0){

String download = request.getParameter(“download”);//download or display

File prefile = new File(filePath);

byte buff[] = new byte[8192];

input = new FileInputStream(prefile);

String contenttype = filePath.substring(filePath.lastIndexOf(“.”)+1, filePath.length());

contenttype = contenttype.toLowerCase();

if(download != null && download.trim().length()>0){

response.setContentType(“application/octet-stream”);

}

else{

if (contenttype != null) {

String responseType = getResponseContentType(contenttype);

response.setContentType(responseType);

} else {

response.setContentType(“application/octet-stream”);

}

}

response.setHeader(“Content-Length”, String.valueOf(prefile.length()));

if(download != null && download.trim().length()>0){

response.setHeader(“Content-Disposition”,”attachment; filename=\”"+ prefile.getName()+”\”");

}

else{

response.setHeader(“Content-disposition”, (new StringBuilder(“inline; filename=”)).append(prefile.getName()).toString());

}

response.addHeader(“Cache-Control”, “no-transform, max-age=0″);

int i = 0;

while ((i = input.read(buff)) > 0) {

outputStream.write(buff, 0, i);

outputStream.flush();

}

}

}

catch (Exception e) {

e.printStackTrace();

}

finally {

if (input != null)

input.close();

if (outputStream != null)

outputStream.close();

}

}

private String getResponseContentType(String contenttype){

String responseType = “”;

if(contenttype.indexOf(“doc”)>-1){

responseType = “application/vnd.ms-word”;

}

if(contenttype.indexOf(“rtf”)>-1){

responseType = “application/rtf”;

}

else if(contenttype.indexOf(“xls”)>-1){

responseType = “application/vnd.ms-excel”;

}

else if(contenttype.indexOf(“ppt”)>-1){

responseType = “application/ppt”;

}

else if(contenttype.indexOf(“xml”)>-1){

responseType = “text/xml”;

}

else if(contenttype.indexOf(“html”)>-1){

responseType = “text/html”;

}

else if(contenttype.indexOf(“htm”)>-1){

responseType = “text/htm”;

}

else if(contenttype.indexOf(“txt”)>-1 || contenttype.indexOf(“log”)>-1){

responseType = “text/plain”;

}

else if(contenttype.indexOf(“pdf”)>-1){

responseType = “application/pdf”;

}

else if(contenttype.indexOf(“gif”)>-1){

responseType = “image/gif”;

}

else if(contenttype.indexOf(“png”)>-1){

responseType = “image/png”;

}

else if(contenttype.indexOf(“jpg”)>-1){

responseType = “image/jpg”;

}

else if(contenttype.indexOf(“jpeg”)>-1){

responseType = “image/JPEG”;

}

else if(contenttype.indexOf(“jpe”)>-1){

responseType = “image/JPEG”;

}

else if(contenttype.indexOf(“bmp”)>-1){

responseType = “image/bmp”;

}

else if(contenttype.indexOf(“jpeg”)>-1){

responseType = “image/JPEG”;

}

else if(contenttype.indexOf(“tiff”)>-1){

responseType = “image/tiff”;

}

else if(contenttype.indexOf(“tif”)>-1){

responseType = “image/tiff”;

}

else if(contenttype.indexOf(“html”)>-1){

responseType = “text/html”;

}

else{

responseType = “application/octet-stream”;

}

return responseType;

}

}

Configuration in web.xml

<servlet>

<servlet-name>ViewFile</servlet-name>

<servlet-class>com.org.servlet.DownloadFile</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>ViewFile</servlet-name>

<url-pattern>*.viewfile</url-pattern>

</servlet-mapping>

<mime-mapping>

<extension>pptx</extension>

<mime-type>

application/vnd.openxmlformats-officedocument.presentationml.presentation

</mime-type>

</mime-mapping>

<mime-mapping>

<extension>docx</extension>

<mime-type>application/vnd.openxmlformats-officedocument.wordprocessingml.document</mime-type>

</mime-mapping>

<mime-mapping>

<extension>xlsx</extension>

<mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</mime-type>

</mime-mapping>

JSP Code……

<form name=’form1′ method=”post” action=”file.viewfile” target=”fileframe”/>

<input type=’hidden’ name=’fileNames’ id=’fileNames’ value=’C:/path/resume.txt’/>

<input type=’hidden’ name=’download’ id=’download’ value=’true’/>//set as blank when u want to display

<input type=’Submit’ name=’Submit’ id=’Submit’ value=’Display’/>

</form>

<frame></frame>

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • LinkedIn
  • RSS
  • Technorati
  • Twitter

Speak Your Mind

Tell us what you're thinking...
and oh, if you want a pic to show with your comment, go get a gravatar!

Secure Linux Web Hosting