gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Java进阶之FileUpload完成上传的实例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

 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 。

最后此篇关于Java进阶之FileUpload完成上传的实例的文章就讲到这里了,如果你想了解更多关于Java进阶之FileUpload完成上传的实例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com