package com.gaurangjadia.code.controllers;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Download extends HttpServlet {
private static final long serialVersionUID = 1L;
public Download() {
super();
}
public void init(ServletConfig config) throws ServletException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try{
String fileName = request.getParameter("name");
String path = request.getSession().getServletContext().getRealPath("/WEB-INF/upload/");
//strFileName: Name of the file which is being downloaded and which exist under /WEB-INF/upload/ path
if(fileName.equals("strFileName")){
path += "/" + fileName;
File file = new File(path);
Integer intFileLength = (int)(file.length() / 1024) + 1;
response.setContentType(new MimetypesFileTypeMap().getContentType(file));
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
FileInputStream in = new FileInputStream(path);
OutputStream out = response.getOutputStream();
byte buf[] = new byte[intFileLength];
int bytesRead = 0;
while( (bytesRead = in.read(buf)) > 0 ){
out.write(buf, 0, bytesRead);
}
out.close();
in.close();
}
else{
request.getRequestDispatcher("/WEB-INF/download.jsp").forward(request, response);
}
}
catch(Exception ex){
request.getRequestDispatcher("/WEB-INF/download.jsp").forward(request, response);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}