使用ServletFileUpload 实现文件上传 和获取文件信息

1、我使用的是ServletFileUpload来实现同个form表单中图片和文字信息的同时上传(支持多文件上传),首先我们先看下前端JSP页面的实例代码:

<form action="servlet/TestServlet" enctype="multipart/form-data" method = "post"> 
    <input type = "text" name = "text1"><br> 
    <input type = "text" name = "text2"><br>
    <input type = "file" name = "file1"><br> 
    <input type = "file" name = "file2"><br>
    <input type = "submit" value = "提交">
</form>

2、获取text或者是文件上传的内容,需要先判断是否为文件上传。

fileItem.isFormField()

其他参数如下:

String name = fileItem.getFieldName(); // 获取name属性的值
String value = fileItem.getString(); // 获取value属性的值
String fieldName = fileItem.getFieldName(); // 文件域中name属性的值
String fileName = fileItem.getName(); // 文件的全路径(firefox获得的文件名)
String contentType = fileItem.getContentType(); // 文件的类型
long size = fileItem.getSize(); // 文件的大小,以字节为单位

3、文件上传代码

fileItem.write(new File(filePath));
//filepath为文件上传之后的路径

以下为我的实例代码:

request.setCharacterEncoding("utf-8");
        //构造一个缓冲区大小为sizeThreshold和临时文件为目录为repository的文件项工厂。
        DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
        //使用factory的缓冲区和临时文件
        ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
        List<FileItem> fileItems = null;
        try {
            //获得表单中提交的数据(为List集合)
            fileItems = servletFileUpload.parseRequest(request);
        } catch (FileUploadException e) {
            e.printStackTrace();
        }
        String gallery_id = null;
        String gallery_imgName = null;
        String gallery_information = null;
        String gallery_imgUrl = null;
        String filePath = "E:\\java project\\NetBankSystem\\web\\";//创建一个存放上传文件的目录
        String imgName = null;
        //遍历表单中提交的数据
        Iterator iter = fileItems.iterator();
        while (iter.hasNext()){
            FileItem fileItem = (FileItem) iter.next();
            //如果是表单域,不是文件类型
            if (fileItem.isFormField()){
                //获取value值,声明代码编码
                String value = fileItem.getString("utf-8");
                if (fileItem.getFieldName().equals("gallery_id")){//对应form中的name值
                    gallery_id = value;
                }else if (fileItem.getFieldName().equals("gallery_imgName")){
                    gallery_imgName = value;
                }else if (fileItem.getFieldName().equals("gallery_information")){
                    gallery_information = value;
                }
            }else {
                //获取文件域中的name属性的值
                gallery_imgUrl = fileItem.getFieldName();
                imgName = fileItem.getName();
                if(imgName != null && !imgName.equals("")){
                    try {
                        fileItem.write(new File(filePath + gallery_imgUrl));
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值