- 浏览: 138159 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
nishwd123:
受益匪浅,多谢楼主细心讲解.
Hibernate、Spring和Struts工作原理及使用理由 -
doublelcf:
写得真好。全面,流畅。清晰
Hibernate、Spring和Struts工作原理及使用理由
Servlet上传文件,commons-fileupload
<form name="uploadForm" method="POST" enctype="MULTIPART/FORM-DATA"
action="upload">
HTTP请求正文采用"multipart/from-data"数据类型,它表示复杂的包括多个子部分的复杂表单.
不管HTTP请求正文为何种数据类型,Servlet容器都会把HTTP请求包装成一个HTTPServletRequest对象.
Servlet直接从HTTPServletRequest对象中解析出复合表单的每个子部分仍然是一项非常复杂的工作.
因此可以利用Apache提供的两个软件包来实现文件上传.
commons-fileipload-1.2.1.jar
commons-io-1.4.jar
UploadServlet.java
web.xml
upload.htm
<form name="uploadForm" method="POST" enctype="MULTIPART/FORM-DATA"
action="upload">
HTTP请求正文采用"multipart/from-data"数据类型,它表示复杂的包括多个子部分的复杂表单.
不管HTTP请求正文为何种数据类型,Servlet容器都会把HTTP请求包装成一个HTTPServletRequest对象.
Servlet直接从HTTPServletRequest对象中解析出复合表单的每个子部分仍然是一项非常复杂的工作.
因此可以利用Apache提供的两个软件包来实现文件上传.
commons-fileipload-1.2.1.jar
commons-io-1.4.jar
UploadServlet.java
package mypack; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; import org.apache.commons.fileupload.*; import org.apache.commons.fileupload.disk.*; import org.apache.commons.fileupload.servlet.*; public class UploadServlet extends HttpServlet { private String filePath;//存放上传文件的目录 private String tempFilePath;//存放临时文件的目录 public void init(ServletConfig config) throws ServletException { super.init(config); filePath = config.getInitParameter("filePath"); System.out.println("filePath1 " + filePath); tempFilePath = config.getInitParameter("tempFilePath"); System.out.println("tempFilePath1 " + tempFilePath); filePath = this.getServletContext().getRealPath(filePath); System.out.println("filePath2 " + filePath); tempFilePath = this.getServletContext().getRealPath(tempFilePath); System.out.println("tempFilePath2 " + tempFilePath); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/plain"); //向客户端发送响应正文 PrintWriter outNet = response.getWriter(); try { //创建一个基于硬盘的FileItem工厂 DiskFileItemFactory factory = new DiskFileItemFactory(); //设置向硬盘写数据时所用的缓冲区的大小,此处为4K factory.setSizeThreshold(4*1024); //设置临时目录 factory.setRepository(new File(tempFilePath)); //创建一个文件上传处理器 ServletFileUpload upload = new ServletFileUpload(factory); //设置允许上传的文件的最大尺寸,此处为4M upload.setSizeMax(4*1024*1024); List items = upload.parseRequest(request); Iterator iter = items.iterator(); while(iter.hasNext()) { FileItem item = (FileItem)iter.next(); if(item.isFormField()) { processFormField(item,outNet); //处理普通的表单域 } else { processUploadedFile(item,outNet); //处理上传文件 } } outNet.close(); } catch (Exception ex) { ex.printStackTrace(); } } private void processFormField(FileItem item, PrintWriter outNet) { String name = item.getFieldName(); String value = item.getString(); outNet.println(name + ":" + value + "\r\n"); } private void processUploadedFile(FileItem item, PrintWriter outNet) throws Exception { String filename = item.getName(); int index = filename.lastIndexOf("\\"); filename = filename.substring(index+1, filename.length()); long fileSize = item.getSize(); if(filename.equals("") && fileSize == 0) return; File uploadFile = new File(filePath + "/" + filename); item.write(uploadFile); outNet.println(filename + "is saved."); outNet.println("The size of " +filename+" is "+fileSize+"\r\n"); } }
web.xml
<servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>UploadServlet</servlet-name> <servlet-class>mypack.UploadServlet</servlet-class> <init-param> <param-name>filePath</param-name> <param-value>store</param-value> </init-param> <init-param> <param-name>tempFilePath</param-name> <param-value>temp</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>UploadServlet</servlet-name> <url-pattern>/upload</url-pattern> </servlet-mapping>
upload.htm
<html> <head> <title>Upload</title> </head> <body> <form name="uploadForm" method="POST" enctype="MULTIPART/FORM-DATA" action="upload"> <table> <tr> <td> <div align="right"> User Name: </div> </td> <td> <input type="text" name="username" size="30" /> </td> </tr> <tr> <td> <div align="right"> Upload File1: </div> </td> <td> <input type="file" name="file1" size="30" /> </td> </tr> <tr> <td> <div align="right"> Upload File2: </div> </td> <td> <input type="file" name="file2" size="30" /> </td> </tr> <tr> <td> <input type="submit" name="submit" value="upload"> </td> <td> <input type="reset" name="reset" value="reset"> </td> </tr> </table> </form> </body> </html>
发表评论
-
Java中serialVersionUID
2012-11-26 13:27 840Java中serialVersionUID serialV ... -
ArrayList数组对象排序
2012-11-13 21:53 1409POJO package com.test.compara ... -
Java堆和栈的区别 equals 和 == 的区别
2012-11-07 12:10 796Java堆和栈的区别 equals ... -
Cookie,Session,Application用法及区别
2012-05-22 15:20 2802一.Cookie 首先,Cookie的作用域为 ... -
static 的用法
2012-05-22 13:58 879static 代码块应用 package com.ut ... -
finally解析
2012-05-22 13:47 930一.finally 中的语句什么 ... -
java 断言 assert 初步使用:断言开启、断言使用
2012-05-04 20:43 1523java 断言 assert 初步使用:断言开启、断言使用 ... -
java 定时任务实现
2012-04-05 22:41 3652java.util.Timer定时器,实际上是个线程,定时调度 ... -
堆与栈的区别
2012-02-24 11:58 924堆和栈的区别 全局,静态,new产生的变量都在堆中动态分 ... -
在Java中用单例模式有什么好处
2012-01-30 19:46 1298Java Singleton模式主要作 ... -
JAVA单例模式的几种实现方法
2012-01-30 19:41 8711 饿汉式单例类.在类初始化时,已经自行实例化 clas ... -
jsp中的注释<!-- -->内容中不能包含--
2011-11-23 17:45 889jsp中的注释<!-- -->内容中不能包含-- ... -
ibatis和hibernate的区别
2011-08-15 13:34 624ibatis和hibernate的区别 ... -
equals和"=="浅析
2011-02-24 22:30 791==操作符专门用来比较 ... -
java中的重写与重载
2011-02-21 13:59 853方法的重写Overriding和重载Overloading是J ... -
MyEclipse生成WAR包并在Tomcat下部署发布
2011-02-18 22:56 2264右键选中项目,选择export。 然后选择J2EE-> ... -
JPA详解
2011-02-17 08:54 2000JPA全称Java Persistence API.JPA通过 ... -
comparable和comparator的区别
2011-02-16 17:59 1206两者区别: 1) Comparable接 ... -
Freemarker网站静态化实现
2011-02-15 14:26 1042转载自http://www.iteye.com/topic/4 ... -
jdk1.5之后新特性总结
2011-02-15 12:17 986前两天 面试的时候面试官突然问我jdk1.5之后的 ...
相关推荐
java+servlet+commons-io-2.4.jar+commons-fileupload-1.3.jar实现文件的上传与下载
利用servlet实现的commons-fileupload的实例。也就是文件上传实例。
commons-fileupload apache开源项目,实现文件上传下载功能 ssh上传时必配
这是servlet上传文件所需的jar包,commons-fileupload-1.3.3和commons-io.2.2
新建一个servlet: FileUpload.java用于文件上传: package com.drp.util.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet....
本文件为一个MyEclipse工具开发的java web 工程压缩文件。本工程用于演示如何使用servlet和commons-fileupload-1.2.1.jar和commons-io-2.4.jar两个jar包实现文件上传的功能。
如何使用servlet和commons-fileupload-1.2.1.jar和commons-io-2.4.jar两个jar
用servlet技术实现文件上传下载我们需要导入两个额外的jar包,commons-io-1.4.jar和commons-fileupload-1.2.1.jar,将这个两个jar 包导入WEB-INF/lib目录里
Apache Commons FileUpload组件提供了一种简单而灵活的方法,可以向servlet和web应用程序添加对多部分文件上传功能的支持。commons-fileupload-1.2.2 commons-io-2.0.1
这是java网页上传文件的辅助jar包commons-fileupload.jar可以实现文件上传
commons-fileupload上传组件,J2EE中JSP、Servlet所用到的文件上传组件包括commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar
使用apache的commons-fileupload上传文件
浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件。
java实现上传下载的demo,包括jsp和servlet代码。适合初学者,看完之后你会发现java实现上传下载其实很简单。同时我提供了需要用到的两个架包(commons-fileupload-1.2.1.jar;commons-io-1.3.2.jar),把两个架包放...
用于servlet文件上传的组件,方便初学java web开发的人下载使用
采用apache commons 项目中的fileupload组件,实现了文件上传功能,它能够便利而简单地使得web应用程序和servlet具备高性能的文件上传能力,减小了直接操作输入输出流的系统开销。
利用commons-fileupload-1.1.1.jar包实现文件上传快速开发
servlet实现文件上传时所需要的jar包,用于解析客户端上传的文件(二进制数据)
NULL 博文链接:https://yangsj19870829.iteye.com/blog/1943544
commons-fileupload servlet 多文件上传