使用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