爱问知识人 爱问教育 医院库

怎么利用apache的FileUpload组件实现文件上传?

首页

怎么利用apache的FileUpload组件实现文件上传?

怎么利用apache的FileUpload组件实现文件上传?

提交回答

全部答案

    2017-07-26 21:54:37
  •   
    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; /** 以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为基础来写得,具体情况需要修改。
      

    刘***

    2017-07-26 21:54:37

类似问题

换一换
  • 系统软件 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):