package com.XXX.utils;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import com.nskj.base.entity.BaseResponse;
import com.nskj.base.entity.BaseResponse.CodeType;/***
* 文件上传
* @author Administrator
**/
public classUploadFile {public staticString uploadFile(HttpServletRequest request){
String json="";
String filePath="";
BaseResponse br=newBaseResponse();//创建一个通用的多部分解析器
CommonsMultipartResolver multipartResolver = newCommonsMultipartResolver(request.getSession().getServletContext());//List fileUrlList = new ArrayList();//用来保存文件路径,用于jsp页面回显用//判断 request 是否有文件上传,即多部分请求
if(multipartResolver.isMultipart(request)){//转换成多部分request
MultipartHttpServletRequest multiRequest =(MultipartHttpServletRequest)request;//取得request中的所有文件名
Iterator iter =multiRequest.getFileNames();
boolean flag=true;while(iter.hasNext()){//记录上传过程起始时的时间,用来计算上传时间
int pre = (int) System.currentTimeMillis();//取得上传文件
MultipartFile file =multiRequest.getFile(iter.next());//判定上传文件大小
if(file != null){int filesize = 102400000;if(file.getSize()>filesize){//上传文件大小不得超过100M
json="上传大小不得超过100M";
flag=false;returnjson;
}//取得当前上传文件的文件名称
String myFileName =file.getOriginalFilename();
String newFile= myFileName.substring(0,myFileName.lastIndexOf("."));int lastNum = myFileName.lastIndexOf(".");
String suffix= myFileName.substring(lastNum, myFileName.length()); //后缀//如果名称不为“”,说明该文件存在,否则说明该文件不存在
if(myFileName.trim() !=""){
System.out.println(myFileName);if(myFileName.contains(".doc" )||myFileName.contains(".docx" )||myFileName.contains(".xls" )||myFileName.contains(".xlsx" )||myFileName.contains(".pdf" )||myFileName.contains(".rar" )||myFileName.contains(".zip")){//重命名上传后的文件名
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String appendixName= newFile+"_"+sdf.format(new Date())+suffix;//定义上传路径
String realpath = request.getSession().getServletContext().getRealPath("/WEB-INF/upload-special");
filePath= realpath+"/" +appendixName;
File localFile= newFile(filePath);if (!localFile.getParentFile().exists()) { //这个判断必须加上
localFile.getParentFile().mkdir();
}if (!localFile.exists()) {
localFile.mkdir();
}try{
file.transferTo(localFile);//文件上传
String path="/WEB-INF/upload-special/"+appendixName;
json=appendixName+","+path;returnjson;
}catch (IllegalStateException |IOException e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}else{
json="只支持word,excel,PDF,zip,rar,jpg,png,jpeg,pneg文件上传,谢谢!";
flag=false;returnjson;
}
}
}
}if(flag){
json="文件上传成功!";returnjson;
}
}returnjson;
}
}