0

I am using Apache Commons FileUpload for uploading the file .

I am not able to upload xml,js,css files on the server but its working fine for pdf,txt,jsp.It shows the file with ".tmp" extension.Can anyone tell me which file extensions are supported by "Apache Commons FileUpload" ?

I was even able to upload zipped txt/pdf files but when i tried the same for xms/js/css files, it didn't work.

public class FileLocationContextListener implements ServletContextListener {

public void contextInitialized(ServletContextEvent servletContextEvent) {
    String rootPath = System.getProperty("catalina.home");
    ServletContext ctx = servletContextEvent.getServletContext();
    String relativePath = ctx.getInitParameter("tempfile.dir");
    File file = new File(rootPath + File.separator + relativePath);
    if(!file.exists()) file.mkdirs();
    System.out.println("File Directory created to be used for storing files>>>>>"+rootPath +"##"+ File.separator + relativePath);
    ctx.setAttribute("FILES_DIR_FILE", file);
    ctx.setAttribute("FILES_DIR", rootPath + File.separator + relativePath);
}

public void contextDestroyed(ServletContextEvent servletContextEvent) {
    //do cleanup if needed
}

}

----------------------------------CONTROLLER--------------------------------------

public class UploadDownloadFileServlet extends HttpServlet {

private static final long serialVersionUID = 1L;
private ServletFileUpload uploader = null;

@Override
public void init() throws ServletException{
    DiskFileItemFactory fileFactory = new DiskFileItemFactory();
    File filesDir = (File) getServletContext().getAttribute("FILES_DIR_FILE");
    fileFactory.setRepository(filesDir);
    this.uploader = new ServletFileUpload(fileFactory);
            System.out.println("INSIDE INIT--");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String fileName = request.getParameter("fileName");
            System.out.println("INSIDE GET METHOD :----"+fileName);
    if(fileName == null || fileName.equals("")){
        throw new ServletException("File Name can't be null or empty");
    }
    File file = new File(getServletContext().getAttribute("FILES_DIR")+File.separator+(fileName).substring(3));
    if(!file.exists()){
        throw new ServletException("File doesn't exists on server.");
    }
    System.out.println("File location on server::"+file.getAbsolutePath());
    ServletContext ctx = getServletContext();
    InputStream fis = new FileInputStream(file);
    String mimeType = ctx.getMimeType(file.getAbsolutePath());
    response.setContentType(mimeType != null? mimeType:"application/octet-stream");
    response.setContentLength((int) file.length());
    response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");

    ServletOutputStream os       = response.getOutputStream();
    byte[] bufferData = new byte[1024];
    int read=0;
    while((read = fis.read(bufferData))!= -1){
        os.write(bufferData, 0, read);
    }
    os.flush();
    os.close();
    fis.close();
    System.out.println("File downloaded at client successfully");
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    if(!ServletFileUpload.isMultipartContent(request)){
        throw new ServletException("Content type is not multipart/form-data");
    }

    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.write("<html><head></head><body>");
    try {
        List<FileItem> fileItemsList = uploader.parseRequest(request);
        Iterator<FileItem> fileItemsIterator = fileItemsList.iterator();
        while(fileItemsIterator.hasNext()){
            FileItem fileItem = fileItemsIterator.next();
            System.out.println("FieldName="+fileItem.getFieldName());
            System.out.println("FileName="+fileItem.getName());
            System.out.println("ContentType="+fileItem.getContentType());
            System.out.println("Size in bytes="+fileItem.getSize());
            System.out.println("****"+getServletContext().getAttribute("FILES_DIR"));

            File file = new File(getServletContext().getAttribute("FILES_DIR")+File.separator+(fileItem.getName()).substring(3));
            System.out.println("Absolute Path at server="+file.getAbsolutePath());
            fileItem.write(file);
            out.write("File "+fileItem.getName()+ " uploaded successfully.");
            out.write("<br>");
            out.write("<a href=\"UploadDownloadFileServlet?fileName="+fileItem.getName()+"\">Download "+fileItem.getName()+"</a>");
        }
    } catch (FileUploadException e) {
        out.write("Exception in uploading file1.");
    } catch (Exception e) {
        out.write("Exception in uploading file.");
    }
    out.write("</body></html>");
}

}
Shashank Vivek
  • 16,888
  • 8
  • 62
  • 104

0 Answers0