服务器之家

服务器之家 > 正文

Java进阶之FileUpload完成上传的实例

时间:2021-01-09 14:25     来源/作者:不知不觉已变淡

 Java进阶之FileUpload完成上传的实例

   FileUpload是Apache commons下面的一个子项目,用来实现Java项目下的文件上传功能,常见的文件上传还有SmartUpload,Servlet3.0,Struts2。

     在这里我用的是commons- fileupload-1.2.1,下面就是一个简单实例,解析过程都写到代码中的注释上了,注释很详细

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//创建磁盘文件项工厂
      DiskFileItemFactory diskFileItemFactory=new DiskFileItemFactory();
      //设置缓冲区的大小,如果文件的大小超过了缓冲区的大小,就会产生临时文件
      diskFileItemFactory.setSizeThreshold(1024*1024*3);
      //获得核心解析类
      ServletFileUpload fileUpload=new ServletFileUpload(diskFileItemFactory);
      //解决中文文件名上传乱码
      fileUpload.setHeaderEncoding("UTF-8");
      //解析request,返回list集合
      List<FileItem> list = fileUpload.parseRequest(request);
      //获得每个部分,将遍历的值存入到一个map集合中
      Map<String, String> map=new HashMap<>();
      //设置上传文件的文件名
      String fileName=null;
      for (FileItem fileItem : list) {
        //判断普通项和文件上传项
        if (fileItem.isFormField()) {
          //普通项
          String name=fileItem.getFieldName();
          String value=fileItem.getString("UTF-8");
          map.put(name, value);
        }else {
          //文件上传项
          //获得文件名
          fileName=fileItem.getName();
          //获得文件的输入流
          InputStream is=fileItem.getInputStream();
          //获得文件上传的路径
          String path=this.getServletContext().getRealPath("/products/1");
          OutputStream os=new FileOutputStream(path+"/"+fileName);
          int len=0;
          byte[] b=new byte[1024];
           
          while ((len=is.read(b))!=-1) {
            os.write(b, 0, len);
          }
          is.close();
          os.close();
        }

     组件FileUpload使用FileItemFactory工厂创建新的文件项目。这个给了组件FileUpload很大的灵活性。这个工厂拥有怎样创建项目的最终控制权。工厂执行过程中上传项目文件的临时数据可以存储在内存中或硬盘上。这个依赖于上传项目的大小(即:数据的字节)。不过这种行为可以在你的应用程序中适当的自定制。

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

原文链接:http://blog.csdn.net/kdc18333608478/article/details/52664720

标签:

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享 2020-04-07
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部