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; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。