进行文件上传一般有三种方式
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包,里面有三个jar包,绝对你够用
common-fileupload官方文档
java中用common-fileupload上传文件的一个很简单的demo展示
赠送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-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-...
Struts2拦截器学习.doc Common-FileUpload实现文件上传.doc 写得很好
common-fileupload控件不能删除临时文件的原因分析 1.分析原因 2.出现条件 3.过程分析 4.解决办法
Common-FileUpload带进度条文件上传
common-FileUpload.jar
一些前缀是common 的jar包,希望大家有用吧
包括commons所有的18个工具包: validator、pool、beanutil、logging、dbcp、collections、codec、digester、discover、email、fileupload、httpclient、jelly、jxpath、lang、modeler、net
赠送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-fileupload-1.4.jar
上传图片利用common-fileUpload的Demo
NULL 博文链接:https://arron-huang.iteye.com/blog/1032585
commons-fileupload-1.3.3.jar和commons-io-2.6.jar最新版本
利用common-fileUpload 封装的图片上传系统 ,内部提供了可配置的约束图片上传类型,图片上传路径、缓存路径等信息,透露了两个servlet供外部进行上传、删除图片。
commons-fileupload-1.2.2.jar和commons-io.jar,用于java开发。
NULL 博文链接:https://412887952-qq-com.iteye.com/blog/1366123