使用 commons-fileupload 配合 servlet 上传文件相关方法 (基本上传方法)

A》理论  

使用的工具包 commons-fileupload

commons-fileupload.jar

commons-io.jar

这个小组件,它会帮我们解析request中的上传数据, 解析成功后结果封装到了一个FileItem对象中,我们只需要调用FileItem的方法即可!

1>上传三步

相关类

工厂类:DiskFileItemFactory

解析器 ServletFileUpload

表单项 FileItem

1,创建工厂:DiskFileitemFactory factory = new DiskFileItemFactory();

2,创建解析器:ServletFileUpload sfu = new ServletFileUpload(factory);

3,使用解析器来解析request , 把结果封装到FileItem对象中, List<FileItem> fileItem = sfu.parseRequest(request);

2>FileItem

boolean isFormField(); 是否为普通表单项!返回true 为普通表单项,如果为false即文件表单项

String getFileName(); 返回当前表单的名称

String getString(String charset) 返回表单项的值 (适合用于普通表单项)

String getName() 返回上传的文件名

long getSize() 返回上传文件的字节数

InputStream getInputStream() 返回上传文件的输入流

void write(File destFile) 把上传的文件内容保存到指定的文件中

B》代码 演示(文件的基本上传代码,没有加入任何限制,如大小,类型限制等)

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        /*
         * 上传三步
         * 相关类 DiskFileItemFactory
         * ServletFileUpload
         * FileItem
         * 1,创建工厂 DiskFileItemFactory factory = new DiskFileItemFtory();
         * 2创建解析器 ServletFileUpload sfu = new ServletFileUpload(factory);
         * 3,使用解析器来解析 request ,得到 FileItem集合 : List<FileItem> fileItem = sfu.parseRequest(request);
         * FileItem API 接口
         * 
         */
        DiskFileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload sfu = new ServletFileUpload(factory);
        try {
            List<FileItem> fileItem = sfu.parseRequest(req);
            FileItem f0 = fileItem.get(0);
            FileItem f1 = fileItem.get(1);
            
            System.out.println("普通表单项"+f0.getFieldName()+"="+f0.getString("utf-8"));
            System.out.println("文件表单项");
            System.out.println("Content-type:"+f1.getContentType());
            System.out.println("size:"+f1.getSize());
            System.out.println("fileName:"+f1.getName());
            //保存文件
            File destFile = new File("D:/image/"+CommonUtils.unid()+".jpg"); //CommonUtils 为自己所封装的一个文件名的工具,可以换成自己的
            f1.write(destFile);
            
        } catch (FileUploadException e) {
            throw new RuntimeException(e);
        } catch (Exception e) {            
            throw new RuntimeException(e);
        }
        
    }

 jsp 表单代码

<h1>选择图片后,点击按钮上传</h1>
    <form action='<c:url value="/Upload" />' method="post" enctype="multipart/form-data">
    <input type="text" size="45" name="name">
    <input type="file" name="imgfile">
<!--     <button class="button" οnclick="ajaxFileUpload()">上传</button> -->
    <button class="submit">上传</button>
    </form>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值