文件上传
1 package cn.servlet; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.util.List; 6 import java.util.UUID; 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.disk.DiskFileItemFactory; 16 import org.apache.commons.fileupload.servlet.ServletFileUpload; 17 18 @WebServlet(urlPatterns = "/up2") 19 public class Up2Servlet extends HttpServlet { 20 @Override 21 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 22 req.setCharacterEncoding("UTF-8"); 23 24 DiskFileItemFactory disk = new DiskFileItemFactory(); 25 ServletFileUpload up = new ServletFileUpload(disk); 26 // 如果你不知道用户上传多少个文件,则应该遍历 27 try { 28 List<FileItem> list = up.parseRequest(req); 29 FileItem item1 = list.get(0); 30 String name = item1.getString("UTF-8");// 对于非文件,用于这种方式来获取用户提交的 31 FileItem item2 = list.get(1); 32 String age = item2.getString("UTF-8"); 33 FileItem item3 = list.get(2); 34 String fileName = item3.getName(); 35 fileName = fileName.substring(fileName.lastIndexOf("\\") + 1); 36 // 对文件重名称 37 String extName = fileName.substring(fileName.lastIndexOf(".") + 1);// abc.jpg 38 // -=> 39 // jpg 40 String uuid = UUID.randomUUID().toString().replace("-", ""); 41 String newFileName = uuid + "." + extName; 42 // 获取文件上传的真实的目录 43 String realPath = getServletContext().getRealPath("/files"); 44 // 实现文件上传 45 item3.write(new File(realPath, newFileName)); 46 // 将转发到show.jsp显示 47 req.setAttribute("name", name); 48 req.setAttribute("age", age); 49 req.setAttribute("oldFileName", fileName); 50 req.setAttribute("newFileName", newFileName); 51 req.getRequestDispatcher("/jsps/show.jsp").forward(req, resp); 52 } catch (Exception e) { 53 e.printStackTrace(); 54 } 55 56 } 57 }