ajaxFileUpload文件上传后台通用代码

importjava.io.File;
importjava.io.IOException;
importjava.io.InputStream;
importjava.util.Date;
importjava.util.HashMap;
importjava.util.Iterator;
importjava.util.List;
importjava.util.Map;
importjava.util.Properties;
importjava.text.SimpleDateFormat;
importjavax.servlet.http.HttpServletRequest;

importorg.apache.commons.fileupload.diskFileUpload;
importorg.apache.commons.fileupload.FileItem;
importorg.apache.commons.fileupload.FileUploadException;
importorg.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException;
importorg.apache.log4j.Logger;

//importsun.util.logging.resources.logging;


/**
*通用文件上传
*
*@authorWang
*@date2013-07-20
*/
publicclassupload{

/**
*上传后,将InputStream保存到封装的map中
*/
publicstaticintFILESTREAM=1;
/**
*上传后,将文件转化为二进制保存
*/
publicstaticintFILEBYTES=2;
/**
*
*/
publicstaticintFILE=3;


privateStringfileName="";

publicStringgetFileName(){
returnfileName;
}

publicvoidsetFileName(StringfileName){
this.fileName=fileName;
}
privatestaticStringfilePath="";
privatestaticlongmaxUploadSize=1024*512*1024;
privatestaticStringheaderEncoding="UTF-8";
Loggerlog=Logger.getLogger(getClass());

/**
*上传最大上限
*保存类型为FILESTREAM
*@paramrequest
*@return
*/
publicMapupload(HttpServletRequestrequest){
returnupload(request,maxUploadSize,FILESTREAM);
}

/**
*判断filePhth路径中是否存在该文件夹,不存在则创建该文件夹
*创建成功则返回True
*@paramfilePhth
*@return
**/
publicbooleancreateFile(StringfilePhth){
FiledirFile;
booleanbFile=false;
try{
dirFile=newFile(filePhth);
bFile=dirFile.exists();
if(bFile!=true){
bFile=dirFile.mkdir();
}
}catch(Exceptione)
{
}
returnbFile;
}

static{
Propertiesr=PropertiesHelper.loadProperty("/upload.properties");
if(!r.isEmpty()){
try{
filePath=r.getProperty("filePath");

}catch(Exceptione){
Logger.getLogger(Upload.class).error("无法读filePath参数",e);
}
try{
headerEncoding=r.getProperty("headerEncoding");

}catch(Exceptione){
Logger.getLogger(Upload.class).error("无法读headerEncoding参数",e);
}
try{
maxUploadSize=Long.parseLong(String.valueOf(r.get("maxUploadSize")));
}catch(Exceptione){
Logger.getLogger(Upload.class).error("无法读maxUploadSize参数",e);
}}else{
Logger.getLogger(Upload.class).error("无法读取upload.properties");
}
}




/**
*@paramrequest
*@paramsize上传文件大小上限
*@paramtype保存类型1、保存InputStream,2保存bytes
*@return
*/
publicMapupload(HttpServletRequestrequest,longsize,inttype){

Mapmap=newHashMap();
diskFileUploadfileUpload=newdiskFileUpload();
fileUpload.setSizeMax(size==0?maxUploadSize:size);//最大上传大小
fileUpload.setHeaderEncoding("UTF-8");
fileUpload.setSizeThreshold(4096);
SimpleDateFormatsdf=newSimpleDateFormat("yyyyMM");
FileItemfileItem=null;
StringoldFileName="";
try{
ListitemList=fileUpload.parseRequest(request);
for(Iteratoriterator=itemList.iterator();iterator.hasNext();){
fileItem=(FileItem)iterator.next();
System.out.println("--------maps----------"+fileItem.isFormField());
if(fileItem.isFormField()){
map.put(fileItem.getFieldName(),fileItem.getString());
}else{
if(type==FILESTREAM){
map.put(fileItem.getFieldName(),fileItem.getInputStream());
}elseif(type==FILEBYTES){
InputStreamin=fileItem.getInputStream();
byte[]b=newbyte[in.available()];
in.read(b);
map.put(fileItem.getFieldName(),b);
}else{
StringstrPhthString=filePath+File.separator+File.separator;
oldFileName=fileItem.getName();
map.put("FILE_NAME",oldFileName.substring(oldFileName.lastIndexOf(File.separator)+1,oldFileName.length()));
map.put("FILE_SIZE",newLong(fileItem.getSize()));
fileName=fileName+oldFileName.substring(oldFileName.lastIndexOf("."),oldFileName.length());//存储文件名;

map.put(fileItem.getFieldName(),fileName);//该参数为生成文件夹和文件名连在一起
createFile(strPhthString);
map.put("FILE_PATH",fileName);

fileItem.write(newFile(strPhthString+fileName));
}
}
}
log.error("upload:"+map);
returnmap;
}catch(SizeLimitExceededExceptione){
map.clear();
map.put("error","filetolarge.Themaxsizeis"+fileUpload.getSizeMax());
}catch(FileUploadExceptione){
map.clear();
map.put("error",e.getMessage());
}catch(IOExceptione){
map.clear();
map.put("error",e.getMessage());
}catch(Exceptione){
e.printstacktrace();
map.put("error",e.getMessage());
}
returnmap;
}



/**
*@paramrequest
*@paramsize上传文件大小上限
*@paramtype保存类型1、保存InputStream,2保存bytes
*@return
*/
publicMapupload2(HttpServletRequestrequest,inttype){
Mapmap=newHashMap();
diskFileUploadfileUpload=newdiskFileUpload();
fileUpload.setSizeMax(size);//最大上传大小
FileItemfileItem=null;
SimpleDateFormatsdf=newSimpleDateFormat("yyyyMM");
StringoldFileName="";
try{
ListitemList=fileUpload.parseRequest(request);
StringstrPhthString=request.getRealPath("/")+"/upimage/"+sdf.format(newDate());
for(Iteratoriterator=itemList.iterator();iterator.hasNext();){
fileItem=(FileItem)iterator.next();
if(fileItem.isFormField()){
map.put(fileItem.getFieldName(),b);
}else{
oldFileName=fileItem.getName();
fileName=CommonUtil.getCurrentDateTime()+oldFileName.substring(oldFileName.indexOf("."),oldFileName.length());

map.put(fileItem.getFieldName(),sdf.format(newDate())+"/"+fileName);//该参数为生成文件夹和文件名连在一起
createFile(strPhthString);
fileItem.write(newFile(strPhthString+"/"+fileName));

}
}
}
log.error("upload:"+map);
returnmap;
}catch(SizeLimitExceededExceptione){
map.clear();
map.put("error","filetolarge.Themaxsizeis"+size);
}catch(FileUploadExceptione){
map.clear();
map.put("error",e.getMessage());
}catch(Exceptione){
//TodoAuto-generatedcatchblock
e.printstacktrace();
}
returnmap;
}

}

记得引用commons-fileupload.jar 包,调用方式

		Uploadupload=newUpload();

		Stringfjid=Identities.uuid2();//唯一32位编码
		upload.setFileName(fjid);
		intuptype=Upload.FILE;
		Mapmap=upload.upload(getRequest(),uptype);//文件删除
			if(map.isEmpty()){
					setAttr("success",false);
				setAttr("msg","未知");
				renderjson();
			}elseif(map.containsKey("error")){
				setAttr("success",""+map.get("error")+"");
				renderjson();
			}
			//可以将获取文件真实名称文件服务器名称文件路径,文件大小保存数据库
		Stringext=getFileExt((String)map.get("FILE_NAME"));
		Stringwjmc=map.get("FILE_NAME").toString();
		Stringpath=map.get("FILE_PATH").toString();
		Stringarchivesfileid=getPara(0);
		Stringsize=map.get("FILE_SIZE").toString();

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...