开发者社区> 贺臣情缘> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Java 上传文件总结

简介: 1. 使用commons-fileupload.jar+commons-io.jar 上传 代码  1 try { 2             DiskFileItemFactory factory = new DiskFileItemFactory(); 3             factory.
+关注继续查看

1. 使用commons-fileupload.jar+commons-io.jar 上传

代码
 1 try {
 2             DiskFileItemFactory factory = new DiskFileItemFactory();
 3             factory.setSizeThreshold(1024 * 1024 * 10);
 4             factory.setRepository(new File(request.getRealPath("/")));
 5             System.out.println(">>>" + request.getParameter("file5"));
 6             ServletFileUpload upload = new ServletFileUpload(factory);
 7             upload.setSizeMax(1024 * 1024 * 10);
 8             List<FileItem> items = upload.parseRequest(request);
 9             for (FileItem item : items) {
10                 if (item.isFormField()) {
11                     String name = item.getFieldName();
12                     String value = item.getString("GBK");
13                     System.out.println(name + "-----" + value);
14                 } else {
15                     String fieldName = item.getFieldName();
16                     String fileName = item.getName();
17                     System.out.println("文件域名称:" + fieldName);
18                     System.out.println("文件名:" + fileName);
19                     System.out.println("文件类型:" + item.getContentType());
20                     FileOutputStream fos = new FileOutputStream(request
21                             .getRealPath("/")
22                             + fileName.substring(fileName.lastIndexOf("\\")));
23                     if(item.isInMemory()){
24                         fos.write(item.get());
25                     }else{
26                         InputStream is=item.getInputStream();
27                         byte[] buffer=new byte[1024];
28                         int len=0;
29                         while((len=is.read())>0){
30                             fos.write(buffer,0,len);
31                         }
32                         is.close();
33                         fos.close();
34                     }
35                 }
36             }
37         } catch (Exception e) {
38             System.out.println(e.getMessage());
39         }

   点击此处下载核心文件包 /Files/qingyuan/lib.rar

  getFieldName()获取表单域的name属性值

  getString(String encoding) 获得表单域的Value属性值,参数为编码集

  getName()获得上传文件的名称

  getContentType()获得上传文件的类型

  get()获得上传文件的字节内容

(2) 使用COS上传

代码
 1 MultipartParser mp=new MultipartParser(request,10*1024*1024);
 2         Part part=null;
 3         while((part=mp.readNextPart())!=null){
 4             String name=part.getName();
 5             System.out.println("表单域的名称:"+name);
 6             if(part.isParam()){
 7                 ParamPart paramPart=(ParamPart)part;
 8                 String value=paramPart.getStringValue("GBK");
 9                 System.out.println("值:"+value);
10             }else if(part.isFile()){
11                 FilePart filePart=(FilePart)part;
12                 String fileName=filePart.getFileName();
13                 if(fileName!=null){
14                     filePart.writeTo(new File(request.getRealPath("/")+fileName));
15                 }
16             }
17         }

 

  使用COS上传文件需要使用cos.jar这个包,可以到Http://www.servlets.com/cos 这个网站下载

  使用COS上传文件比Commons-fileupload 要方便许多,但是对中文支持不好,如果上传文件中有中文会出现乱码。所以建议使用Commons-fileupload.jar 上传。其实Struts2 中的 文件上传也是依赖这个包,只不过是进行了更进一步的封装。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java文件操作、IO流4
Java文件操作、IO流4
29 0
Java文件操作、IO流3
Java文件操作、IO流3
33 0
Java文件操作、IO流2
Java文件操作、IO流2
17 0
Java文件操作、IO流1
Java文件操作、IO流1
52 0
JAVA 多线程——实现创建线程的五种写法
JAVA 多线程——实现创建线程的五种写法
9 0
Java多线程(三)、线程的通信、wait(),notify(),notifyAll()、生产者/消费者问题、创建线程的方式三:实现Callable接口、创建线程的方式四:使用线程池
Java多线程(三)、线程的通信、wait(),notify(),notifyAll()、生产者/消费者问题、创建线程的方式三:实现Callable接口、创建线程的方式四:使用线程池
21 0
java 如何读取解析 mac 下的 pages 文稿,实现数据库正向工程
版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢。 https://blog.csdn.net/testcs_dn/article/details/80768968 mac下使用 pages 文稿编写的数据库设计文档,虽然 mac 下也有 word,但还是习惯用 pages,感觉它要比 word 开启的速度快一些,使用起来也挺方便的。
1094 0
Java并发问题--乐观锁与悲观锁以及乐观锁的一种实现方式-CAS
首先介绍一些乐观锁与悲观锁: 悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。
921 0
Java并发编程 -- AQS入门&实现可重入锁
Java并发编程 -- AQS可能会看的一脸懵逼,今天实战一个项目练手AQS MyAQSLock.java /** * Created by Fant.
1110 0
+关注
贺臣情缘
游历IT界多年颇有心得,非传说中的技术大牛。致力于仓储管理软件方面的开发
200
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载