javaweb基础----文件上传

 

导入这两个包:

commons-fileupload-1.3.1.jar,commons-io-2.4.jar(版本不用完全一样)

文件上传

jsp页面

 1 <body>
 2 <!-- 上传文件三要素:
 3     1.输入框input type设置为file
 4     2.表单提交方式为post
 5     3.表单enctype属性设置为:multipart/form-data -->
 6     <form action="${root }/upload1" enctype="multipart/form-data" method="post">
 7         文件描述:<input type="text" name="desc"/><br>
 8         <input  type="file" name="upload"/><br>
 9         <input type="submit" name="submit" value="上传"/>
10     </form>
11 </body>

servlet书写

 1 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 2         request.setCharacterEncoding("utf-8");
 3         //1.获取磁盘文件项工厂
 4         DiskFileItemFactory factory = new DiskFileItemFactory();
 5         //2.装配到ServletFileUpload中
 6         ServletFileUpload fileUpload =new ServletFileUpload(factory);
 7         //设置文件项编码
 8         fileUpload.setHeaderEncoding("utf-8");
 9         //3.解析request请求
10         try {
11             List<FileItem> list = fileUpload.parseRequest(request);
12             //4.遍历文件项,判断文件项的类型
13             for (FileItem fileItem : list) {
14                 if(fileItem.isFormField()) {
15                     //普通文件项
16                     String fieldName = fileItem.getFieldName();
17                     String fileValue = fileItem.getString();
18                     System.out.println(fieldName+"的值为:"+fileValue);
19                 }else {
20                     //上传文件项
21                     String fileName = fileItem.getName();
22                     System.out.println(fileName);
23                     //获取上传文件路径
24                     String realPath = this.getServletContext().getRealPath("/upload");
25                     System.out.println(realPath);
26                     File file = new File(realPath, fileName);
27                     //向指定位置输上传文件
28                     fileItem.write(file);
29                 }
30             }
31             
32         } catch (FileUploadException e) {
33             // TODO Auto-generated catch block
34             e.printStackTrace();
35         } catch (Exception e) {
36             // TODO Auto-generated catch block
37             e.printStackTrace();
38         }
39     }

 

posted @ 2018-03-20 23:02  大浪东去人不在  阅读(99)  评论(0)    收藏  举报