仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 785|回复: 17
打印 上一主题 下一主题

[学习教程] 了解下JAVA的使用apache的FileUpload组件完成文件上传

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:14:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
再说第三点:我并没有提到服务器也要整合,然后是IDE,一个好的IDE能够200%提高开发的速度,就说图形方面:你是经过简单托拽和点击就能实现功能好那。
1、能够完成一个或多个文件的上传,也能够吸收一般的form表双数据。
2、复杂测试了一下,对内存的占用仍是能够忍耐的,并且速率也能够。偶然会招致内存利用的上升并且不会下落,长工夫后是不是会降上去还没有测试。
关头点:
1、提交文件上传的form的method属性为post,enctype属性为multipart/form-data。
2、input标签必要有name属性,不然取不到内容。
看看servlet的完成,正文已很具体了:
Java代码
  1. packageorg.xxm;
  2. importjava.io.BufferedInputStream;
  3. importjava.io.BufferedOutputStream;
  4. importjava.io.File;
  5. importjava.io.FileOutputStream;
  6. importjava.io.IOException;
  7. importjava.util.Iterator;
  8. importjava.util.List;
  9. importjavax.servlet.http.HttpServlet;
  10. importjavax.servlet.http.HttpServletRequest;
  11. importjavax.servlet.http.HttpServletResponse;
  12. importdareway.org.apache.commons.fileupload.FileItem;
  13. importdareway.org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException;
  14. importdareway.org.apache.commons.fileupload.disk.DiskFileItemFactory;
  15. importdareway.org.apache.commons.fileupload.servlet.ServletFileUpload;
  16. importdareway.org.apache.commons.fileupload.util.Streams;
  17. /**
  18. *@authorxuxiaoming
  19. *2009-03-19
  20. *以tomcat6.0为服务器
  21. */
  22. publicclassUploadFileServletextendsHttpServlet{
  23.         publicvoiddoGet(HttpServletRequestreq,
  24.                         HttpServletResponseres){
  25.                 return;
  26.         }
  27.        
  28.         publicvoiddoPost(HttpServletRequestreq,
  29.                         HttpServletResponseres)throwsIOException{
  30.                 /**
  31.                 *form中的enctype必需是multipart/...
  32.                 *组件供应办法检测form表单的enctype属性
  33.                 *在isMultipartContent办法中同时检测了是不是是post提交
  34.                 *假如不是post提交则前往false
  35.                 */
  36.                 if(ServletFileUpload.isMultipartContent(req)){
  37.                         req.setCharacterEncoding("utf-8");
  38.                         DiskFileItemFactoryfactory=newDiskFileItemFactory();
  39.                         /**
  40.                         *一时文件存储路径要实在存在
  41.                         */
  42.                         factory.setRepository(newFile("../webapps/fileupload/tmp"));
  43.                         //内存最年夜占用
  44.                         factory.setSizeThreshold(1024000);
  45.                         ServletFileUploadsfu=newServletFileUpload(factory);
  46.                         //单个文件最年夜值byte
  47.                         sfu.setFileSizeMax(102400000);
  48.                         //一切上传文件的总和最年夜值byte
  49.                         sfu.setSizeMax(204800000);
  50.                         Listitems=null;
  51.                         try{
  52.                                 items=sfu.parseRequest(req);
  53.                         }catch(SizeLimitExceededExceptione){
  54.                                 System.out.println("sizelimitexception!");
  55.                         }catch(Exceptione){
  56.                                 e.printStackTrace();
  57.                         }
  58.                        
  59.                         Iteratoriter=items==null?null:items.iterator();
  60.                         while(iter!=null&&iter.hasNext()){
  61.                                 FileItemitem=(FileItem)iter.next();
  62.                                 //复杂的表单域
  63.                                 if(item.isFormField()){
  64.                                         System.out.print("formfield:");
  65.                                         System.out.print(item.getFieldName()+"");
  66.                                         System.out.print(item.getString());
  67.                                 }
  68.                                 //文件域
  69.                                 elseif(!item.isFormField()){
  70.                                         System.out.println("clientname:"+item.getName());
  71.                                         StringfileName=item.getName().substring(item.getName().lastIndexOf(""));
  72.                                         BufferedInputStreamin=newBufferedInputStream(item.getInputStream());
  73.                                         //文件存储在工程的upload目次下,这个目次也得存在
  74.                                         BufferedOutputStreamout=newBufferedOutputStream(
  75.                                                         newFileOutputStream(newFile("../webapps/fileupload/upload/"+fileName)));
  76.                                         Streams.copy(in,out,true);
  77.                                 }
  78.                         }
  79.                 }else{
  80.                         System.out.println("enctypeerror!");
  81.                 }
  82.         }
  83. }
复制代码
由于利用tomcat做得服务器,以是内里的路径都是以tomcat为基本来写得,详细情形必要修正。

Java的桌面程序开发在java程序员里通常叫swing开发,主要用的swing包里的类开发的,也就是通常说的c/s架构开发
精灵巫婆 该用户已被删除
沙发
发表于 2015-1-20 18:23:00 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
不帅 该用户已被删除
板凳
发表于 2015-1-21 11:19:57 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
再见西城 该用户已被删除
地板
发表于 2015-1-30 17:01:03 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
冷月葬花魂 该用户已被删除
5#
发表于 2015-2-5 23:23:01 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
第二个灵魂 该用户已被删除
6#
发表于 2015-2-8 23:51:49 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
柔情似水 该用户已被删除
7#
发表于 2015-2-9 14:10:45 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
兰色精灵 该用户已被删除
8#
发表于 2015-2-9 23:34:20 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
谁可相欹 该用户已被删除
9#
发表于 2015-2-12 23:07:38 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
莫相离 该用户已被删除
10#
发表于 2015-2-28 06:27:36 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
透明 该用户已被删除
11#
发表于 2015-3-6 20:48:12 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
变相怪杰 该用户已被删除
12#
发表于 2015-3-6 22:00:14 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
乐观 该用户已被删除
13#
发表于 2015-3-7 01:10:54 | 只看该作者
是一种使用者不需花费很多时间学习的语言
金色的骷髅 该用户已被删除
14#
发表于 2015-3-8 01:34:17 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
因胸联盟 该用户已被删除
15#
发表于 2015-3-10 21:29:13 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
蒙在股里 该用户已被删除
16#
发表于 2015-3-11 19:20:50 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
若相依 该用户已被删除
17#
发表于 2015-3-19 09:15:10 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
飘飘悠悠 该用户已被删除
18#
发表于 2015-3-27 17:08:39 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 00:25

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表