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 @Override21 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 Listlist = 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.jpg38 // -=>39 // jpg40 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 }