表單:
<form action="A" method="post" enctype="multipart/form-data"> <!-- 是上傳表單 --> 用戶名:<input type="text" name="username"><br/> 文件:<input type="file" name="file1"><br/> <input type="submit" value="提交"> </form>
Servlet:
public class Servlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.創建文件上傳工廠類 DiskFileItemFactory fac = new DiskFileItemFactory(); //2.創建文件上傳核心類 ServletFileUpload upload = new ServletFileUpload(fac); //[設置單個文件最大上傳大小:30M] upload.setFileSizeMax(30*1024*1024); //[設置總的文件最大上傳大小:50M] upload.setSizeMax(50*1024*1024); //判斷表單是否為文件上傳表單 if(upload.isMultipartContent(request)){ //3.把請求數據轉換為FileItem對象集合 try { List<FileItem> items = upload.parseRequest(request); //遍歷每一個上傳項 for(FileItem item:items){ //再判斷是普通表單還是文件上傳表單 if(item.isFormField()){ //普通表單 System.out.println("普通表單"); //獲取元素名稱 String fileName = item.getFieldName(); //獲取文本框的值 String value = item.getString("UTF-8"); System.out.println(fileName+":"+value); }else{ //處理文件上傳 //獲取上傳文件的名字 String name = item.getName(); System.out.println(name); //獲取上傳的目錄路徑,指定文件存儲路徑 String basePath = "G:/IntelliJ IDEA 2018.2.4/DynamicWeb/src/"; /*絕對路徑,存放到服務器中的路徑*/ //創建文件對象 File file = new File(basePath,name); try { item.write(file); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }//寫文件 item.delete();//刪除臨時文件 } } } catch (FileUploadException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else{ System.out.println("文件上傳異常,不處理!"); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } }
將表單提交到Servlet后,即可實現本地文件上傳至指定的服務器目錄。