/** * * 上傳文件 * */ public class FileUploadServlet2 extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { // 1.創建磁盤文件項工廠----這里的temp為臨時文件目錄 String path_temp = this.getServletContext().getRealPath("temp"); DiskFileItemFactory factory = new DiskFileItemFactory(1024 * 1024, new File(path_temp)); // 2.創建文件上傳的核心類 ServletFileUpload upload = new ServletFileUpload(factory); // 設置上傳文件名的編碼----以防文件名亂碼 upload.setHeaderEncoding("utf-8"); // ServletFileUpload的API boolean multipartContent = upload.isMultipartContent(request);// 判斷表單是否是文件上傳的表單 if (multipartContent) { // 是文件上傳的表單 // **解析request獲得文件項集合 List<FileItem> parseRequest = upload.parseRequest(request); if (parseRequest!=null) { for (FileItem item : parseRequest) { //判斷是不是一個普通表單項 boolean formField = item.isFormField(); if (formField) { //普通表單項 String fieldName = item.getFieldName(); String fieldValue = item.getString("UTF-8");//對普通表單項的內容編碼 } else { //獲取文件名 String fileName = item.getName(); //得到輸入流 InputStream in = item.getInputStream(); //獲取文件存放路徑 String path = this.getServletContext().getRealPath("upload"); //將文件存入相應目錄 OutputStream out = new FileOutputStream(path+"/"+fileName); IOUtils.copy(in, out); in.close(); out.close(); //最后刪除temp目錄下的臨時文件、 item.delete(); } } } } else { // 非文件上傳表單,用原始獲取方式request.getParameter("表單name"); } } catch (FileUploadException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }