JSP/servlet实现文件上传下载和删除

由于存储空间,对一般用户而言,就是用来操作存储文件的,所以这两天,特意看了一下windows下用servlet实现文件上传、下载和删除,下面是详细代码说明

 

上传:

用的是commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar组件,可以去apache官网上去下载,然后放到WebRoot/WEB-INF/lib目录下

 

upload.html

 

  1. <html
  2. <head
  3.     <meta http-equiv="Content-Type" content="text/html; charset=GBK"
  4.     <title>File upload</title
  5. </head
  6. <body
  7. <!-- action="fileupload"对应web.xml中<servlet-mapping>中<url-pattern>的设置.--> 
  8. <!-- 必须是multipart的表单数据,才能完整的传递文件数据 --> 
  9.     <form name="myform" action="fileupload" method="post" 
  10.        enctype="multipart/form-data"
  11.        File:<br
  12.        <input type="file" name="myfile"><br
  13.        <br
  14.        <input type="submit" name="submit" value="Commit"
  15.     </form
  16. </body
  17. </html

 

 

web.xml里加上下面几行:

  1. <servlet
  2.   <servlet-name>Upload</servlet-name
  3.   <servlet-class>am.demo.Upload</servlet-class
  4. </servlet
  5. <servlet-mapping
  6.   <servlet-name>Upload</servlet-name
  7.   <url-pattern>/fileupload</url-pattern
  8. </servlet-mapping

 

 

src目录下新建文件Upload.java:

  1. package am.demo; 
  2.  
  3. import java.io.File; 
  4. import java.io.IOException; 
  5. import java.util.Iterator; 
  6. import java.util.List; 
  7.  
  8. import javax.servlet.ServletException; 
  9. import javax.servlet.http.HttpServlet; 
  10. import javax.servlet.http.HttpServletRequest; 
  11. import javax.servlet.http.HttpServletResponse; 
  12.  
  13. import org.apache.commons.fileupload.FileItem; 
  14. import org.apache.commons.fileupload.disk.DiskFileItemFactory; 
  15. import org.apache.commons.fileupload.servlet.ServletFileUpload; 
  16.  
  17. @SuppressWarnings("serial") 
  18. public class Upload extends HttpServlet { 
  19.     private String uploadPath = "d://temp"; // 上传文件的目录 
  20.  
  21.     @SuppressWarnings("unchecked") 
  22.     public void doPost(HttpServletRequest request, HttpServletResponse response) 
  23.             throws IOException, ServletException { 
  24.         try { 
  25.             // Create a factory for disk-based file items 
  26.             DiskFileItemFactory factory = new DiskFileItemFactory(); 
  27.  
  28.  
  29.             // Create a new file upload handler 
  30.             ServletFileUpload upload = new ServletFileUpload(factory); 
  31.  
  32.  
  33.             List<FileItem> items = upload.parseRequest(request);// 得到所有的文件 
  34.             Iterator<FileItem> i = items.iterator(); 
  35.             while (i.hasNext()) { 
  36.                 FileItem fi = (FileItem) i.next(); 
  37.                 String fileName = fi.getName(); 
  38.                 if (fileName != null) { 
  39.                     File fullFile = new File(fi.getName()); 
  40.                     File savedFile = new File(uploadPath, fullFile.getName()); 
  41.                     fi.write(savedFile); 
  42.                 } 
  43.             } 
  44.              
  45.             response.setContentType("text/html;charset=GBK");   
  46.             response.getWriter().print( 
  47.             "<mce:script language='javascript'><!-- 
  48. alert('上传成功');window.location.href='index.jsp'; 
  49. // --></mce:script>"); 
  50.         } catch (Exception e) { 
  51.             // 可以跳转出错页面 
  52.             e.printStackTrace(); 
  53.         } 
  54.     } 
  55.  
  56.     public void init() throws ServletException { 
  57.         File uploadFile = new File(uploadPath); 
  58.         if (!uploadFile.exists()) { 
  59.             uploadFile.mkdirs(); 
  60.         } 
  61.     } 

 

 

再看下载Downlaod.java:

  1. package am.demo; 
  2.  
  3. import java.io.File; 
  4. import java.io.FileInputStream; 
  5. import java.io.IOException; 
  6. import java.io.OutputStream; 
  7.  
  8. import javax.servlet.ServletException; 
  9. import javax.servlet.http.HttpServlet; 
  10. import javax.servlet.http.HttpServletRequest; 
  11. import javax.servlet.http.HttpServletResponse; 
  12.  
  13. @SuppressWarnings("serial") 
  14. public class Download extends HttpServlet { 
  15.     public void doGet(HttpServletRequest request, HttpServletResponse response) 
  16.             throws IOException, ServletException { 
  17.  
  18.  
  19.         String aFileName = new String(request.getParameter("name").getBytes( 
  20.                 "iso8859-1"), "gbk"); 
  21.  
  22.         File fileLoad = new File("d:/temp", aFileName); 
  23.  
  24.         FileInputStream in = null; // 输入流 
  25.         OutputStream out = response.getOutputStream(); 
  26.         byte b[] = new byte[1024]; 
  27.  
  28.         try { 
  29.  
  30.              response.setContentType("application/x-msdownload;"); 
  31.  
  32.             response.setHeader("Content-disposition", "attachment; filename=" 
  33.                     + new String(aFileName.getBytes("GBK"), "ISO-8859-1")); 
  34.  
  35.             // download the file. 
  36.             in = new FileInputStream(fileLoad); 
  37.             int n = 0; 
  38.             while ((n = in.read(b)) != -1) { 
  39.                 out.write(b, 0, n); 
  40.             } 
  41.  
  42.         } catch (Throwable e) { 
  43.             e.printStackTrace(); 
  44.         } finally { 
  45.             try { 
  46.                 in.close(); 
  47.                 out.close(); 
  48.             } catch (Throwable e) { 
  49.                 e.printStackTrace(); 
  50.             } 
  51.         } 
  52.     } 
  53.  
  54.     public void doPost(HttpServletRequest request, HttpServletResponse response) 
  55.             throws IOException, ServletException { 
  56.         doGet(request, response); 
  57.     } 
  58.  

 

删除Delete.java:

  1. package am.demo; 
  2.  
  3. import java.io.File; 
  4. import java.io.FileNotFoundException; 
  5. import java.io.IOException; 
  6.  
  7. import javax.servlet.ServletException; 
  8. import javax.servlet.http.HttpServlet; 
  9. import javax.servlet.http.HttpServletRequest; 
  10. import javax.servlet.http.HttpServletResponse; 
  11.  
  12. @SuppressWarnings("serial") 
  13. public class Delete extends HttpServlet { 
  14.  
  15.     public void doGet(HttpServletRequest request, HttpServletResponse response) 
  16.             throws FileNotFoundException, IOException { 
  17.  
  18.         String aFileName = new String(request.getParameter("name").getBytes( 
  19.                 "iso8859-1"), "gbk"); 
  20.  
  21.         File file = new File("d:/temp", aFileName); 
  22.  
  23.         response.setContentType("text/html;charset=GBK"); 
  24.  
  25.         if (!file.isDirectory()) { 
  26.             file.delete(); 
  27.             response.getWriter().print( 
  28.                 "<mce:script language='javascript'><!-- 
  29. alert('删除成功');window.location.href='index.jsp'; 
  30. // --></mce:script>"); 
  31.         } else { 
  32.  
  33.         } 
  34.  
  35.     } 
  36.  
  37.     public void doPost(HttpServletRequest request, HttpServletResponse response) 
  38.             throws IOException, ServletException { 
  39.         doGet(request, response); 
  40.     } 
  41. }
posted @ 2015-04-08 22:31  hannover  阅读(802)  评论(0)    收藏  举报