日期:2011-03-22 16:12:00 来源:本站整理
操作apache的FileUpload组件实现文件上传[Java编程]
本文“操作apache的FileUpload组件实现文件上传[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
1、可以实现一个或多个文件的上传,也可以接纳普通的form表单数据.
2、简单测试了一下,对内存的占用还是可以忍耐的,并且速度也可以.无领悟招致内存利用的上升并且不会下降,长时间后能否会降下来还没有测试.
关键点:
1、提交文件上传的form的method属性为post,enctype属性为multipart/form-data.
2、input标签需求有name属性,不然取不到内容.
看看servlet的实现,注释已经很具体了:
Java代码
package org.xxm; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.Iterator; import java.util.List; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import dareway.org.apache.commons.fileupload.FileItem; import dareway.org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException; import dareway.org.apache.commons.fileupload.disk.DiskFileItemFactory; import dareway.org.apache.commons.fileupload.servlet.ServletFileUpload; import dareway.org.apache.commons.fileupload.util.Streams; /** * @author xuxiaoming * 2009-03-19 * 以tomcat6.0为服务器 */ public class UploadFileServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) { return; } public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException { /** * form中的enctype必须是multipart/... * 组件供应办法检测form表单的enctype属性 * 在isMultipartContent办法中同时检测了能否是post提交 * 假如不是post提交则返回false */ if(ServletFileUpload.isMultipartContent(req)) { req.setCharacterEncoding("utf-8"); DiskFileItemFactory factory = new DiskFileItemFactory(); /** * 暂时文件存储途径要真实存在 */ factory.setRepository(new File("../webapps/fileupload/tmp")); //内存最大占用 factory.setSizeThreshold(1024000); ServletFileUpload sfu = new ServletFileUpload(factory); //单个文件最大值byte sfu.setFileSizeMax(102400000); //全部上传文件的总和最大值byte sfu.setSizeMax(204800000); List items = null; try { items = sfu.parseRequest(req); } catch (SizeLimitExceededException e) { System.out.println("size limit exception!"); } catch(Exception e) { e.printStackTrace(); } Iterator iter = items==null?null:items.iterator(); while(iter != null && iter.hasNext()) { FileItem item = (FileItem)iter.next(); //简单的表单域 if(item.isFormField()) { System.out.print("form field:"); System.out.print(item.getFieldName() + " "); System.out.print(item.getString()); } //文件域 else if(!item.isFormField()) { System.out.println("client name:" + item.getName()); String fileName = item.getName().substring(item.getName().lastIndexOf("\\")); BufferedInputStream in = new BufferedInputStream(item.getInputStream()); //文件存储在工程的upload目录下,这个目录也得存在 BufferedOutputStream out = new BufferedOutputStream( new FileOutputStream(new File("../webapps/fileupload/upload/" + fileName))); Streams.copy(in, out, true); } } } else { System.out.println("enctype error!"); } } }
因为利用tomcat做得服务器,所以里面的途径都是以tomcat为底子来写得,具体情形需求改正.
以上是“操作apache的FileUpload组件实现文件上传[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论