Java FileUploadUtil工具类详解
本文实例为大家分享了FileUploadUtil工具类的具体代码,供大家参考,具体内容如下
packagecom.gootrip.util;
importjava.io.File;
importjava.util.*;
importorg.apache.commons.fileupload.*;
importjavax.servlet.http.HttpServletRequest;
importjava.util.regex.Pattern;
importjava.io.IOException;
importorg.apache.commons.fileupload.servlet.ServletFileUpload;
importorg.apache.commons.fileupload.disk.DiskFileItemFactory;
importjava.util.regex.Matcher;
publicclassFileUploadUtil{
//当上传文件超过限制时设定的临时文件位置,注意是绝对路径
privateStringtempPath=null;
//文件上传目标目录,注意是绝对路径
privateStringdstPath=null;
//新文件名称,不设置时默认为原文件名
privateStringnewFileName=null;
//获取的上传请求
privateHttpServletRequestfileuploadReq=null;
//设置最多只允许在内存中存储的数据,单位:字节,这个参数不要设置太大
privateintsizeThreshold=4096;
//设置允许用户上传文件大小,单位:字节
//共10M
privatelongsizeMax=10485760;
//图片文件序号
privateintpicSeqNo=1;
privatebooleanisSmallPic=false;
publicFileUploadUtil(){
}
publicFileUploadUtil(StringtempPath,StringdestinationPath){
this.tempPath=tempPath;
this.dstPath=destinationPath;
}
publicFileUploadUtil(StringtempPath,StringdestinationPath,HttpServletRequestfileuploadRequest){
this.tempPath=tempPath;
this.dstPath=destinationPath;
this.fileuploadReq=fileuploadRequest;
}
/**文件上载
*@returntrue——success;false——fail.
*/
publicbooleanUpload(){
DiskFileItemFactoryfactory=newDiskFileItemFactory();
try{
//如果没有上传目的目录,则创建它
FileUtil.makeDirectory(dstPath+"/ddd");
/*if(!FileUtil.makeDirectory(dstPath+"/ddd")){
thrownewIOException("CreatedestinationDirectoryError.");
}*/
//如果没有临时目录,则创建它
FileUtil.makeDirectory(tempPath+"/ddd");
/*if(!FileUtil.makeDirectory(tempPath+"/ddd")){
thrownewIOException("CreateTempDirectoryError.");
}*/
//上传项目只要足够小,就应该保留在内存里。
//较大的项目应该被写在硬盘的临时文件上。
//非常大的上传请求应该避免。
//限制项目在内存中所占的空间,限制最大的上传请求,并且设定临时文件的位置。
//设置最多只允许在内存中存储的数据,单位:字节
factory.setSizeThreshold(sizeThreshold);
//thelocationforsavingdatathatislargerthangetSizeThreshold()
factory.setRepository(newFile(tempPath));
ServletFileUploadupload=newServletFileUpload(factory);
//设置允许用户上传文件大小,单位:字节
upload.setSizeMax(sizeMax);
ListfileItems=upload.parseRequest(fileuploadReq);
//assumeweknowtherearetwofiles.Thefirstfileisasmall
//textfile,thesecondisunknownandiswrittentoafileon
//theserver
Iteratoriter=fileItems.iterator();
//正则匹配,过滤路径取文件名
StringregExp=".+\\\\(.+)$";
//过滤掉的文件类型
String[]errorType={".exe",".com",".cgi",".asp",".php",".jsp"};
Patternp=Pattern.compile(regExp);
while(iter.hasNext()){
System.out.println("++00++====="+newFileName);
FileItemitem=(FileItem)iter.next();
//忽略其他不是文件域的所有表单信息
if(!item.isFormField()){
Stringname=item.getName();
System.out.println("++++====="+name);
longsize=item.getSize();
//有多个文件域时,只上传有文件的
if((name==null||name.equals(""))&&size==0)
continue;
Matcherm=p.matcher(name);
booleanresult=m.find();
if(result){
for(inttemp=0;temp");
}catch(Exceptione){
//out.println(e);
thrownewIOException(e.getMessage());
}
}else{
thrownewIOException("failtoupload");
}
}
}
}catch(IOExceptione){
System.out.println(e);
}catch(FileUploadExceptione){
System.out.println(e);
}
returntrue;
}
/**从路径中获取单独文件名
*@author
*
*TODO要更改此生成的类型注释的模板,请转至
*窗口-首选项-Java-代码样式-代码模板
*/
publicStringGetFileName(Stringfilepath)
{
Stringreturnstr="*.*";
intlength=filepath.trim().length();
filepath=filepath.replace('\\','/');
if(length>0)
{
inti=filepath.lastIndexOf("/");
if(i>=0)
{
filepath=filepath.substring(i+1);
returnstr=filepath;
}
}
returnreturnstr;
}
/**
*设置临时存贮目录
*/
publicvoidsetTmpPath(Stringtmppath)
{
this.tempPath=tmppath;
}
/**
*设置目标目录
*/
publicvoidsetDstPath(Stringdstpath){
this.dstPath=dstpath;
}
/**
*设置最大上传文件字节数,不设置时默认10M
*/
publicvoidsetFileMaxSize(longmaxsize){
this.sizeMax=maxsize;
}
/**
*设置Http请求参数,通过这个能数来获取文件信息
*/
publicvoidsetHttpReq(HttpServletRequesthttpreq){
this.fileuploadReq=httpreq;
}
/**
*设置Http请求参数,通过这个能数来获取文件信息
*/
publicvoidsetNewFileName(Stringfilename){
this.newFileName=filename;
}
/**
*设置此上传文件是否是缩略图文件,这个参数主要用于缩略图命名
*/
publicvoidsetIsSmalPic(booleanisSmallPic){
this.isSmallPic=isSmallPic;
}
/**
*设置Http请求参数,通过这个能数来获取文件信息
*/
publicvoidsetPicSeqNo(intseqNo){
this.picSeqNo=seqNo;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。