究竟是哪个文件扩展名可以通过Apache Commons FileUpload上传

时间:2014-07-09 08:04:33

标签: java file-upload apache-commons-fileupload

我使用Apache Commons FileUpload上传文件。

我无法在服务器上上传 xml,js,css 文件,但其工作正常 pdf,txt,jsp 。它显示文件带&# 34;的.tmp"任何人都可以告诉我" Apache Commons FileUpload"支持哪些文件扩展名。 ?

我甚至可以上传压缩的txt / pdf文件但是当我为xms / js / css文件尝试相同时,它没有用。

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>");
}

}

0 个答案:

没有答案