commons-fileupload-1.2.2实现文件上传

来源:互联网 发布:温州藤桥网络问政 编辑:程序博客网 时间:2024/05/21 11:05

准备工作:

两个jar包

commons-fileupload-1.2.2  下载地址:点击打开链接

commons-io-2.4  下载地址点击打开链接

jsp代码:

[html] view plaincopy
  1. <form action="Upload" method="post" enctype="multipart/form-data">    
  2. 用户名:<input type="text" name="username" /><br/>        
  3. 文件:<input type="file" name="file1" /><br/>      
  4. <input type="submit" value="上传" /><br/>       
  5. </form>    


Servlet代码:

[java] view plaincopy
  1. package fileupload;  
  2.   
  3. import java.io.FileOutputStream;  
  4. import java.io.IOException;  
  5. import java.io.InputStream;  
  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. /** 
  18.  * Servlet implementation class Upload 
  19.  */  
  20. public class Upload extends HttpServlet {  
  21.     private static final long serialVersionUID = 1L;  
  22.   
  23.   
  24.     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  25.         doPost(request,response);  
  26.     }  
  27.   
  28.     /** 
  29.      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
  30.      */  
  31.     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  32.           
  33.         try {  
  34.                // 1 建立工厂对象  
  35.   
  36.                DiskFileItemFactory factory = new DiskFileItemFactory();  
  37.   
  38.                 // 2 获取解析器  
  39.   
  40.                ServletFileUpload upload = new ServletFileUpload(factory);  
  41.   
  42.                // 3 对请求对象进行解析,得到存放FileItem的list对象  
  43.   
  44.                List<FileItem> list = upload.parseRequest(request);  
  45.   
  46.                 // 4 对FileItem对象列表进行迭代  
  47.   
  48.                for (FileItem item : list) {  
  49.   
  50.                   // 普通输入项  
  51.   
  52.                   if (item.isFormField()) {   
  53.   
  54.                       String paramName = item.getFieldName();  
  55.                       paramName=new String(paramName.getBytes(),"utf-8");  
  56.                       String paramValue = item.getString();  
  57.                       // 乱码问题的彻底解决  
  58.                       paramValue = new String(paramValue.getBytes("ISO-8859-1"),"utf-8");  
  59.                       System.out.println("普通输入项:" + paramName + " = " + paramValue);  
  60.   
  61.                       //获得用户名  
  62.   
  63.                       //String name = paramValue;     
  64.   
  65.                   }    
  66.   
  67.                   // 上传文件  
  68.   
  69.                   else {  
  70.                       String fileName = item.getName();  
  71.                       fileName=new String(fileName.getBytes(),"utf-8");  
  72.                       System.out.println("filename = " + fileName);  
  73.   
  74.                       //如果上传的是文件路径,就将文件路径打印出来  
  75.                       fileName = fileName.substring(fileName.lastIndexOf("\\") + 1);  
  76.   
  77.                       System.out.println("filename = " + fileName);  
  78.   
  79.                       InputStream in = item.getInputStream();  
  80.   
  81.                       byte[] buffer = new byte[1024*4];  
  82.   
  83.                       int len = 0;  
  84.   
  85.                        FileOutputStream fos = new FileOutputStream("D:\\"  
  86.   
  87.                              + fileName);    
  88.   
  89.                       while ((len = in.read(buffer)) > 0) {  
  90.                          fos.write(buffer, 0, len);  
  91.   
  92.                       }  
  93.   
  94.                        fos.flush();  
  95.   
  96.                       in.close();  
  97.   
  98.                       fos.close();  
  99.   
  100.                       request.setAttribute("message""上传成功!!!");  
  101.   
  102.                   }  
  103.   
  104.                }  
  105.   
  106.             } catch (Exception e) {  
  107.   
  108.                e.printStackTrace();  
  109.   
  110.                request.setAttribute("message""上传失败!!");  
  111.   
  112.            }  
  113.   
  114.            request.getRequestDispatcher("/message.jsp").forward(request, response);  
  115.           
  116.     }  
  117.   
  118. }  

原创粉丝点击