怎么利用apache的FileUpload组件实现文件上传?
怎么利用apache的FileUpload组件实现文件上传?
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为基础来写得,具体情况需要修改。
答:如果只是想要使用两个不同的DocumentRoot,那就不用同时运行两个apache,只需要配两个VirtualHost就可以;如果要使用不同的端口(如80/8...详情>>
问:同事ip:10.101.107.28 我的IP:10.101.104.23我们在...
答:你们公司是WINDOWS域环境吗,如果是的话,你在网上邻居里应该能看到对方的主机。让她把文件夹共享出来就可以。 如果不是WINDOWS域,那得看你们是不是在一个...详情>>
问:数据结构顺序表的建立,可定义顺序表 #define maxnum elemtyp...
答:打开VC ,然后点击新建,出来界面之后选择Win32 Console Application并输入工程的名称和选择项目的位置,然后出现“一个空工程”,在点击“...详情>>