ServletFileUpload(Servlet文件上传)

 1 //**文件上传**    form表单提交必须指定Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型"multipart/form-data"
 2             //1.创建磁盘文件项目工厂
 3         DiskFileItemFactory df=new DiskFileItemFactory();
 4                 //2.设置上传的内存缓存区大小    4096=4KB
 5             df.setSizeThreshold(4096);
 6             //3.实列化Servlet文件上传对象    把'磁盘文件项目工厂'放入构造中(把缓存区大小放进去)
 7         ServletFileUpload upload=new ServletFileUpload(df);
 8             try {
 9                 //4.得到所有的上传表单对象集合    返回List<FileItem> 相当于每一个表单元素都是一个FileItem
10                 List<FileItem> itemList=upload.parseRequest(request);
11                     //6.获取文件夹的绝对路径
12                 String path=request.getSession().getServletContext().getRealPath("\\upload");
13                 
14                     //5.遍历表单对象集合
15                 String ntid="";
16                 String ntitle="";
17                 String nauthor="";
18                 String nsummary="";
19                 String ncontent="";
20                 String file="";
21                 String name="";
22                     for(FileItem item:itemList){
23 //                        System.out.println("InMemory:"+item.isInMemory());判断FileItem对象是否是一个简单的表单字段
24                         
25                         //取出用户提交内容
26                         if(item.isFormField()){//判断    item是否是简单的表单字段
27                             if(item.getFieldName().equals("ntid")){
28                                 ntid=item.getString("utf-8");
29                             }else if(item.getFieldName().equals("ntitle")){
30                                 ntitle=item.getString("utf-8");
31                             }else if(item.getFieldName().equals("nauthor")){
32                                 nauthor=item.getString("utf-8");
33                             }else if(item.getFieldName().equals("nsummary")){
34                                 nsummary=item.getString("utf-8");
35                             }else if(item.getFieldName().equals("ncontent")){
36                                 file=item.getString("utf-8");
37                             }
38                         }else{
39                             if(item.getFieldName().equals("file")){
40                                 //得到用户上传文件的路径
41                                 String fileName=item.getName();
42                                 //截取最后文件的名字
43                                 int index=fileName.lastIndexOf("\\");
44                                 name=fileName.substring(index+1);
45                                 
46                                 try {
47                                     //把文件写入服务器文件夹
48                                     item.write(new File(path,name));
49                                 } catch (Exception e) {
50                                     e.printStackTrace();
51                                 }
52                             }
53                         }
54                     }
55             } catch (FileUploadException e) {
56                 /*    form表单中中没有设置
57                     encType="multipart/form-data" method="post"
58                     会造成此异常(FileUploadBase$InvalidContentTypeException)
59                 */
60                 e.printStackTrace();
61             }

需要:

  commons-fileupload.jar  commons-io.jar  两个插件

posted on 2016-08-06 00:08  艺意  阅读(2405)  评论(0编辑  收藏  举报