ServletFileUpload(Servlet文件上传)

//**文件上传**    form表单提交必须指定Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型"multipart/form-data"
            //1.创建磁盘文件项目工厂
        DiskFileItemFactory df=new DiskFileItemFactory();
                //2.设置上传的内存缓存区大小    4096=4KB
            df.setSizeThreshold(4096);
            //3.实列化Servlet文件上传对象    把'磁盘文件项目工厂'放入构造中(把缓存区大小放进去)
        ServletFileUpload upload=new ServletFileUpload(df);
            try {
                //4.得到所有的上传表单对象集合    返回List<FileItem> 相当于每一个表单元素都是一个FileItem
                List<FileItem> itemList=upload.parseRequest(request);
                    //6.获取文件夹的绝对路径
                String path=request.getSession().getServletContext().getRealPath("\\upload");

                    //5.遍历表单对象集合
                String ntid="";
                String ntitle="";
                String nauthor="";
                String nsummary="";
                String ncontent="";
                String file="";
                String name="";
                    for(FileItem item:itemList){
//                        System.out.println("InMemory:"+item.isInMemory());判断FileItem对象是否是一个简单的表单字段

                        //取出用户提交内容
                        if(item.isFormField()){//判断    item是否是简单的表单字段
                            if(item.getFieldName().equals("ntid")){
                                ntid=item.getString("utf-8");
                            }else if(item.getFieldName().equals("ntitle")){
                                ntitle=item.getString("utf-8");
                            }else if(item.getFieldName().equals("nauthor")){
                                nauthor=item.getString("utf-8");
                            }else if(item.getFieldName().equals("nsummary")){
                                nsummary=item.getString("utf-8");
                            }else if(item.getFieldName().equals("ncontent")){
                                file=item.getString("utf-8");
                            }
                        }else{
                            if(item.getFieldName().equals("file")){
                                //得到用户上传文件的路径
                                String fileName=item.getName();
                                //截取最后文件的名字
                                int index=fileName.lastIndexOf("\\");
                                name=fileName.substring(index+1);

                                try {
                                    //把文件写入服务器文件夹
                                    item.write(new File(path,name));
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
                            }
                        }
                    }
            } catch (FileUploadException e) {
                /*    form表单中中没有设置
                    encType="multipart/form-data" method="post"
                    会造成此异常(FileUploadBase$InvalidContentTypeException)
                */
                e.printStackTrace();
            }

需要:commons-fileupload.jar和commons-io.jar两个jar包(注意:这2个jar包的版本如果不注意的话,程序会报错,所以找jar包版本的时候,要结合自己的jdk版本和tomcat版本,如果程序报错了,那就换一个版本,一个一个版本去试吧)

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值