使用intellj idea 創建一個上傳文件的頁面


   今天學習了用servlt創建一個上傳文件的頁面,本來以為很簡單的事情,想着一下就搞定了,沒想到卻困擾了很長時間,代碼檢查了一遍又一遍,卻忽略了服務器的報錯,最后終於解決了問題,原來是都上傳文件路徑里面的文件夾要自己創建,不然系統找不到指定的路徑,所以要吸取教訓,要記得自己創建文件夾,系統是不會幫你創建的。具體代碼如下:

 1 import org.apache.commons.fileupload.FileItem;
 2 import org.apache.commons.fileupload.FileItemFactory;
 3 import org.apache.commons.fileupload.disk.DiskFileItemFactory;
 4 import org.apache.commons.fileupload.servlet.ServletFileUpload;
 5 
 6 import javax.servlet.annotation.WebServlet;
 7 import java.io.File;
 8 import java.io.IOException;
 9 import java.io.PrintWriter;
10 import java.util.Iterator;
11 @WebServlet(name="FileUpload",urlPatterns = "/FileUpload")
12 public class FileUpload extends javax.servlet.http.HttpServlet {
13     protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
14         //判斷文件是否上傳
15 
16         boolean isMultispart = ServletFileUpload.isMultipartContent(request);
17 
18         //創建文件上傳對象
19         if (isMultispart) {
20 
21             FileItemFactory factory =  new DiskFileItemFactory();
22             ServletFileUpload upload = new ServletFileUpload(factory);
23             //存放解析表單的元素
24             Iterator items;
25             try {
26                 //解析表單提交的內容
27                 items = upload.parseRequest(request).iterator();
28                 while (items.hasNext()) {
29 
30                     FileItem Item = (FileItem) items.next();
31                     //判斷他是否屬普通字段
32                     if (!Item.isFormField()) {
33 
34                         //取出上傳文件的名字
35                         String name = Item.getName();
36                         String filename = name.substring(name.lastIndexOf('\\') + 1, name.length());
37                         //上傳文件保存到服務器的路徑
38                         String path = request.getSession().getServletContext().getRealPath("upload") + File.separatorChar + filename;
39                         //上傳文件
40 
41                         File uploadfile = new File(path);
42                         Item.write(uploadfile);
43                        response.setContentType("text/html;charset=utf-8");
44                        PrintWriter out=response.getWriter();
45                        out.print("上傳的文件為:" + name + "<br>");
46                        out.print("上傳的文件地址為:" + path);
47 
48 
49                     }
50 
51                 }
52 
53             } catch (Exception e) {
54                 e.printStackTrace();
55             }
56         }
57 
58     }
59 
60 }

報出的錯誤如下:

所以給自己一個提醒用File上傳文件的時候,要自己創建上傳文件目錄的文件夾。

(用的是Apache的插件進行上傳文件:commons-fileupload-1.3.3.jarcommons-io-2.6.jar


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM