进行文件上传一般有三种方式
1. 使用 fileUpLoad
2. 使用 smartFileUpLoad
3. 自己编写类似的程序进行解析
fileUpLoad 是 apache 的一个开源项目,用来进行解析带有文件的请求处理。著名的 struts 的FormFile 就是用的它进行解析处理的。
1. 首先页面上我们需要将表单设置下面类似的参数:
< form method="post" enctype="multipart/form-data" action=”” >
3. 在我们的servlet中可以获取到request参数,然后可以这样取传递过来的字段参数及文件参数:
下载commons-fileupload-1.2.1.jar,commons-io-1.3.jar放到Project-name\WEB-INF\lib下
-------------------------------------------------------
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.util.regex.*;
import org.apache.commons.fileupload.*;
public class FileUpload
extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=GB2312";
//Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
try {
//临时缓冲文件目录,此处系统默认
File tempfile = new File(System.getProperty("java.io.tmpdir"));
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
// 设置最多只允许在内存中存储的数据,单位:字节
diskFileItemFactory.setSizeThreshold(4096);
//设置缓冲区目录,一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
diskFileItemFactory.setRepository(tempfile);
ServletFileUpload upload = new ServletFileUpload(diskFileItemFactory);
//DiskFileUpload upload = new DiskFileUpload(diskFileItemFactory);
//设置编码,解决上传文件名乱码
upload.setHeaderEncoding("GBK");
// 设置允许用户上传文件大小,单位:字节,这里设为2M
upload.setSizeMax(2 * 1024 * 1024);
//开始读取上传信息
List fileItems = upload.parseRequest(request);
// 依次处理每个上传的文件
Iterator iter = fileItems.iterator();
//正则匹配,过滤路径取文件名
String regExp = ".+(.+)$";
//过滤掉的文件类型
String[] errorType = {
".exe", ".com", ".cgi", ".asp"};
Pattern p = Pattern.compile(regExp);
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
//忽略其他不是文件域的所有表单信息
if (!item.isFormField()) {
String name = item.getName();
long size = item.getSize();
if ( (name == null || name.equals("")) && size == 0) {
continue;
}
Matcher m = p.matcher(name);
boolean result = m.find();
if (result) {
for (int temp = 0; temp < errorType.length; temp++) {
if (m.group(1).endsWith(errorType[temp])) {
throw new IOException(name + ": wrong type");
}
}
//保存上传的文件到指定的目录
//在下文中上传文件至数据库时,将对这里改写
item.write(new File("d:\\" + m.group(1)));
out.print(name + " " + size + "");
}
}
}
}
catch (IOException e) {
e.printStackTrace();
}
catch (FileUploadException e) {
//e.printStackTrace();
}
}
}
分享到:
相关推荐
这个"最全的common-FileUpload.jar包"结合了两个关键的Apache Commons库,为开发者提供了强大的文件上传解决方案,无论是小型项目还是大型企业级应用,都能从中受益。通过深入理解和有效利用这些工具,可以极大地...
下面将详细阐述`common-io`和`common-fileupload`这两个关键组件的主要功能和知识点。 1. **Apache Commons IO** (`common-io.jar`) - **文件和流操作**: 提供了大量与文件和流操作相关的工具类,如`FileUtils`、`...
在文件列表中,“FileUpload--develop”可能是项目的源码仓库或某个开发分支。这通常包含了`Common-fileupload`的源代码、构建脚本、测试用例以及其他辅助文件。通过研究这些源码,我们可以深入学习如何实现文件上传...
Common-FileUpload是Apache Commons项目的一部分,提供了强大的文件上传功能。下面将详细探讨这两个知识点。 首先,我们来看Struts2的拦截器。Struts2的拦截器是一种AOP(面向切面编程)的概念,它们在Action调用...
common-fileupload官方文档
赠送jar包:commons-fileupload-1.3.3.jar; 赠送原API文档:commons-fileupload-1.3.3-javadoc.jar; 赠送源代码:commons-fileupload-1.3.3-sources.jar; 赠送Maven依赖信息文件:commons-fileupload-1.3.3.pom;...
本篇文章将详细讲解如何使用`Commons-FileUpload`进行文件上传,并读取上传文件的内容。 首先,了解`Commons-FileUpload`的工作原理。它解析HTTP请求,将多部分的数据分割成单独的部分,这些部分可以是文本或文件。...
commons-fileupload-1.2.2commons-fileupload-1.2.2commons-fileupload-1.2.2commons-fileupload-1.2.2commons-fileupload-1.2.2commons-fileupload-1.2.2commons-fileupload-1.2.2commons-fileupload-1.2.2commons-...
在`MyProject`这个压缩包中,可能包含了使用`common-fileupload`进行文件上传和下载的示例代码,你可以解压后查看具体实现。通过阅读和理解代码,可以更好地掌握文件上传下载的实践应用。在实际开发中,结合源码和...
common-fileupload控件不能删除临时文件的原因分析 1.分析原因 2.出现条件 3.过程分析 4.解决办法
压缩包子文件的文件名称列表中,"commons-fileupload-1.2.1.jar"是Apache Commons FileUpload的特定版本,1.2.1表示这是该库的第1.2.1次发布。版本号通常伴随着修复错误、添加新功能或优化性能等改进。"121.txt"可能...
"Common-FileUpload带进度条文件上传"是一个专门处理这种需求的解决方案,它允许用户在上传文件时看到进度条,提供更好的用户体验。下面我们将详细探讨这个主题以及相关知识点。 1. 文件上传的基本原理:在Web开发...
"common-fileupload"和"common-io"是Apache Commons项目中的两个重要组件,它们为处理文件上传和输入/输出提供了强大的支持。接下来,我们将详细讨论这两个库的功能、使用方法及其在JSP应用中的重要性。 Apache ...
标题中的"commons-fileupload-1.3.3&commons-fileupload-1.3.3架包和代码.rar"提到了Apache Commons FileUpload的1.3.3版本的库及其源码。Apache Commons FileUpload是一个Java库,专门用于处理HTTP协议中的多部分...
2. **部署组件**:将下载的jar文件(例如commons-fileupload-1.0.jar)复制到Tomcat服务器的webapps/你的web应用/WEB-INF/lib/目录下。如果目录不存在,则需要自行创建。 #### 四、实现文件上传 为了实现文件上传...
赠送jar包:commons-fileupload-1.3.1.jar; 赠送原API文档:commons-fileupload-1.3.1-javadoc.jar; 赠送源代码:commons-fileupload-1.3.1-sources.jar; 包含翻译后的API文档:commons-fileupload-1.3.1-...
包括commons所有的18个工具包: validator、pool、beanutil、logging、dbcp、collections、codec、digester、discover、email、fileupload、httpclient、jelly、jxpath、lang、modeler、net
Java 图片上传系统基于 `common-fileUpload` 模块实现,这是一个常见的用于处理文件上传的Java库。在Java Web开发中,文件上传功能是必不可少的一部分,尤其在涉及到用户提交图片时。`common-fileUpload` 是Apache ...
commons-fileupload-1.4.jar