首页 > 其他分享 >fileupload包的使用

fileupload包的使用

时间:2022-10-22 15:45:20浏览次数:44  
标签:文件 fileupload 请求 1024 item 使用 上传 String

FileUpload组件学习

文件上传时表单提交方式为post,entype值为multipart/form-data二进制上传。

使用formData上传文件时:

processData:false,/*设置不处理数据*/
contentType:false

原理

//对request.getInputStream();获取表单数据的封装

使用步骤

  1. 解析请求: 目标:确保该请求为文件上传请求,否则需要返回前端页面重新请求
ServletFileUpload.isMultipartContent(request);
  1. 创建基于磁盘管理的文件工厂, 目标:管理、接收上传的文件

    原则:阿帕奇官方在文档中说明了一些必须遵守的原则:

    1. 上传的小文件可以保存在内存中。
    2. 较大的项目应写入磁盘上的临时文件。
    3. 不允许非常大的上传请求。
    4. 要设置3个参数(重要)项目最大大小、上传请求最大允许大小以及临时文件的位置
DiskFileItemFactory factory=new DiskFileItemFactory();
//设置缓冲区大小与临时文件目录
factory.setSizeThreshold(1024*1024*10);
File uploadTemp=new File("D:\\uploadTemp");
uploadTemp.mkdirs();
factory.setRepository(uploadTemp);
  1. 创建文件上传的管理者,目标:通过该实例解析请求,获得每一个表单项

    //创建文件上传管理者
    ServletFileUpload upload=new ServletFileUpload(diskFileItemFactory);
    //设置最大请求限制以及最大文件上传值
    upload.setSizeMax(1024*1024*10);
    upload.setFileSizeMax(1024*1024*30);
    //解析请求,list存放着所有的表单请求项
    List<FileItem> items =upload.parseRequest(request);
    
  2. 处理表单项,目标:获得所有表单项,这里区别普通项以及图片项,具体做法如下:

    for(FileItem item:items){
        //判断是不是普通项,是则正常处理
        if(item.isFormField()){//判断是否是上传组件
            String name=item.getFieldName();
            String value=item.getString();//获取非上传组件的value
        }else{
            //图片,进行文件上传
            String filedName=item.getFieldName();//获取表单的name属性值
            String file=item.getName();//获取上传组件的名称
            String contentType=item.getContentType();//获取上传文件的MIME类型
            item.write(new File("src/"+ UUID.randomUUID() +".png"));//将上传项写入指定文件
            //InputStream inputStream = item.getInputStream();//获取输入流读取文件
            item.delete();//上传完成后删除临时文件
        }
    }
    
  3. 清理资源

    在web.xml中配置

    <listener>
        <listener-class>org.apache.commons.fileupload.servlet.FileCleanerCleanup</listener-class>
    </listener>
    

标签:文件,fileupload,请求,1024,item,使用,上传,String
From: https://www.cnblogs.com/qingfeng515/p/16816213.html

相关文章