一、Servlet實現文件上傳,需要添加第三方提供的jar包
下載地址:
1) commons-fileupload-1.2.2-bin.zip : 點擊打開鏈接
2) commons-io-2.3-bin.zip : 點擊打開鏈接
二、文件上傳的表單提交方式必須是POST方式,
編碼類型:enctype="multipart/form-data",默認是 application/x-www-form-urlencoded
比如:<form action="FileUpLoad"enctype="multipart/form-data"method="post">
三、編寫java代碼
package com.utils; import java.io.File; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class FileUpload extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { doPost(request,response); }
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.設置編碼 request.setCharacterEncoding("utf-8"); //2.創建一個工廠類 DiskFileItemFactory diskFileItemFactory=new DiskFileItemFactory(); //3.得到當前項目的根目錄 String dir=this.getServletContext().getRealPath("/"); //4設置緩存的大小 diskFileItemFactory.setSizeThreshold(1024*1024); //5設置文件的保存目錄 File file=new File(dir+"fileTemp"); if(!file.exists()){ file.mkdir(); } //創建request解析器 ServletFileUpload servletFileUpload=new ServletFileUpload(diskFileItemFactory); List <FileItem> list=null; try{ list=servletFileUpload.parseRequest(request); }catch (Exception e) { // TODO: handle exception System.out.println("error"); }
if(!list.isEmpty()){ for(FileItem fileItem:list){ if(fileItem.isFormField()){
}else{ //表單字段的名稱 String fileName=fileItem.getFieldName(); //得到文件的名稱 String filePath=fileItem.getName(); fileItem.getString("utf-8"); try { fileItem.write(new File(file, filePath)); } catch (Exception e) { e.printStackTrace(); } } } } }
} |
四、JSP頁面編寫
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>This page for FileUpload</title> </head> <body> <p>Choose the file for uploading: <form action="accept.jsp" method=post enctype="multipart/form-data"> <input type=file name=fileforload size=30> <br> <input type=submit value=commit name=submit> </form> </body> </html> |