上傳文件時,form表單應加上參數 enctype="multipart/form-datajava
後臺接收:apache
1 package com.jredu.servlet; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.util.ArrayList; 6 import java.util.List; 7 8 import javax.servlet.ServletException; 9 import javax.servlet.annotation.WebServlet; 10 import javax.servlet.http.HttpServlet; 11 import javax.servlet.http.HttpServletRequest; 12 import javax.servlet.http.HttpServletResponse; 13 14 import org.apache.commons.fileupload.FileItem; 15 import org.apache.commons.fileupload.FileUploadException; 16 import org.apache.commons.fileupload.disk.DiskFileItemFactory; 17 import org.apache.commons.fileupload.servlet.ServletFileUpload; 18 19 import com.jredu.model.User; 20 import com.jredu.service.UserService; 21 import com.jredu.service.Impl.UserServiceImpl; 22 23 @WebServlet("/register.action") 24 public class Register extends HttpServlet { 25 26 /** 27 * 28 */ 29 private static final long serialVersionUID = 1057467000241502504L; 30 31 @Override 32 protected void doPost(HttpServletRequest req, HttpServletResponse resp) 33 throws ServletException, IOException { 34 // TODO Auto-generated method stub 35 doGet(req, resp); 36 } 37 38 @Override 39 protected void doGet(HttpServletRequest req, HttpServletResponse resp) 40 throws ServletException, IOException { 41 // TODO Auto-generated method stub 42 UserService service = new UserServiceImpl(); 43 // 建立磁盤工廠 緩衝區和磁盤目錄 44 DiskFileItemFactory factory = new DiskFileItemFactory(); 45 // 設置文件上傳的大小限制 46 ServletFileUpload upload = new ServletFileUpload(factory); 47 upload.setFileSizeMax(1024 * 1024 * 10);// 最大上傳10M 48 upload.setHeaderEncoding("utf-8");// 設置編碼格式 49 try { 50 String name = null; 51 // 註冊獲取前臺的值 52 String value = null; 53 String newName = null; 54 ArrayList<Object> list = new ArrayList<Object>(); 55 @SuppressWarnings("unchecked") 56 List<FileItem> files = upload.parseRequest(req); 57 for (FileItem fileItem : files) { 58 // 判斷當前的數據時文件仍是普通的表單 59 // 是文件 60 if (fileItem.isFormField()) { 61 name = fileItem.getFieldName();// 獲取屬性的名字 62 value = fileItem.getString("utf-8");// 獲取屬性的值 63 list.add(value); 64 } else { 65 // 是表單 66 // 獲取文件上傳的文件名 67 name = fileItem.getName(); 68 69 // 定義一個新的文件來接收 70 newName = System.currentTimeMillis() + name;// 以當前的總秒數來命名防止圖片名稱相同而覆蓋 71 File file = new File("D:\\image\\" + newName); 72 73 // 圖片的存儲路徑 74 String headImg = "img/" + newName; 75 list.add(headImg); 76 // 從緩衝區寫入磁盤 77 fileItem.write(file); 78 fileItem.delete(); 79 } 80 81 } 82 83 // 獲取到所有的用戶列表 84 List<User> uList = service.allUser(); 85 86 // 將新註冊的用戶存入數據 87 boolean flag = service.register(list); 88 89 if (flag) { 90 System.out.println("註冊成功"); 91 92 // 跳轉到登錄界面 93 req.getRequestDispatcher("/page/login.jsp").forward(req, resp); 94 95 } else { 96 System.out.println("註冊失敗"); 97 } 98 99 } catch (FileUploadException e) { 100 // TODO Auto-generated catch block 101 e.printStackTrace(); 102 } catch (Exception e) { 103 // TODO Auto-generated catch block 104 e.printStackTrace(); 105 } 106 107 } 108 109 }