Java文件上传类FileUploadUtil.java代码+注释

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一个通用的Java文件上传类,支持上传图片,支持生成缩略图,设置最大上传文件字节数,不设置时默认10M,可接收来自表单的数据,当有多个文件域时,

只上传有文件的,忽略其他不是文件域的所有表单信息,支持用户对上传文件大小,

字节进行设置,本上传类可过滤掉以下文件类型:".exe", ".com", ".cgi", ".asp", ".php", ".jsp"等,你可自已添加过滤的文件后缀,上传文件时如果没有上传目录,则自动创建它。。。

package com.gootrip.util;

import java.io.File;

import java.util.*;

import mons.fileupload.*;

import javax.servlet.http.HttpServletRequest;

import java.util.regex.Pattern;

import java.io.IOException;

import mons.fileupload.servlet.ServletFileUpload;

import mons.fileupload.disk.DiskFileItemFactory;

import java.util.regex.Matcher;

/**

* TODO 要更改此生成的类型注释的模板,请转至

* 窗口-首选项- Java -代码样式-代码模板

*/

public class FileUploadUtil {

//当上传文件超过限制时设定的临时文件位置,注意是绝对路径

private String tempPath = null;

//文件上传目标目录,注意是绝对路径

private String dstPath = null;

//新文件名称,不设置时默认为原文件名

private String newFileName = null;

//获取的上传请求

private HttpServletRequest fileuploadReq = null;

//设置最多只允许在内存中存储的数据,单位:字节,这个参数不要设置太大

private int sizeThreshold = 4096;

//设置允许用户上传文件大小,单位:字节

//共10M

private long sizeMax = 10485760;

//图片文件序号

private int picSeqNo = 1;

private boolean isSmallPic = false;

public FileUploadUtil(){

}

public FileUploadUtil(String tempPath, String destinationPath){ this.tempPath = tempPath;

this.dstPath = destinationPath;

}

public FileUploadUtil(String tempPath, String destinationPath, HttpServletRequest fileuploadRequest){

this.tempPath = tempPath;

this.dstPath = destinationPath;

this.fileuploadReq = fileuploadRequest;

}

/** 文件上载

* @return true —— success; false —— fail.

*/

public boolean Upload(){

DiskFileItemFactory factory = new DiskFileItemFactory();

try {

//如果没有上传目的目录,则创建它

FileUtil.makeDirectory(dstPath+"/ddd");

/*if (!FileUtil.makeDirectory(dstPath+"/ddd")) {

throw new IOException("Create destination Directory Error.");

}*/

//如果没有临时目录,则创建它

FileUtil.makeDirectory(tempPath+"/ddd");

/*if (!FileUtil.makeDirectory(tempPath+"/ddd")) {

throw new IOException("Create Temp Directory Error.");

}*/

//上传项目只要足够小,就应该保留在内存里。

//较大的项目应该被写在硬盘的临时文件上。

//非常大的上传请求应该避免。

//限制项目在内存中所占的空间,限制最大的上传请求,并且设定临时文件的位置。

//设置最多只允许在内存中存储的数据,单位:字节

factory.setSizeThreshold(sizeThreshold);

// the location for saving data that is larger than getSizeThreshold()

factory.setRepository(new File(tempPath));

ServletFileUpload upload = new ServletFileUpload(factory);

//设置允许用户上传文件大小,单位:字节

upload.setSizeMax(sizeMax);

List fileItems = upload.parseRequest(fileuploadReq);

Iterator iter = fileItems.iterator();

// 正则匹配,过滤路径取文件名

String regExp = ".+\\\\(.+)$";

// 过滤掉的文件类型

String[] errorType = {".exe", ".com", ".cgi", ".asp", ".php", ".jsp"};

Pattern p = pile(regExp);

相关文档
最新文档