@RequestMapping(value = "uploadFile")
public void uploadFile(HttpServletRequest request,HttpServletResponse response) throws IllegalStateException, IOException {
Dto inDto = Dtos.newDto(request);
//创建一个通用的多部分解析器
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
//判断 request 是否有文件上传,即多部分请求
if(multipartResolver.isMultipart(request)){
//转换成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;
//取得request中的所有文件名
Iterator<String> iter = multiRequest.getFileNames();
while(iter.hasNext()){
//记录上传过程起始时的时间,用来计算上传时间
int pre = (int) System.currentTimeMillis();
//取得上传文件
MultipartFile file = multiRequest.getFile(iter.next());
if(file != null){
long size_ = file.getSize()/1024; //以KB为单位存储
long maxSize = NumberUtils.toLong(WebCxt.getCfgOfDB("uploadfile_maxsize_"));
if (size_ > maxSize) {
WebCxt.write(response, AOSCons.ERROR, AOSUtils.merge("操作被取消,文件大小不能超过{0}MB。", maxSize/1024));
return;
}
String[][] fileTypes = new String[][]{{"pdf","txt", "doc","docx", "xls","rar","PDF","TXT", "DOC","XLS","RAR"},{"gif", "jpg", "jpeg", "png", "bmp","GIF","JPG","JPEG","PNG","BMP"}};
//根据上传指定类型选择需要校验的文件类型
String[] fileTypeManager =null;
if(inDto.getInteger("fileType")==0){
fileTypeManager=fileTypes[0];
}else{
fileTypeManager=fileTypes[1];
}
String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1).toLowerCase();
if(!Arrays.<String>asList(fileTypeManager).contains(fileExt)){
WebCxt.write(response, AOSCons.ERROR, AOSUtils.merge("操作被取消,上传文件扩展名是不允许的扩展名{0}!",fileExt));
return;
}
//取得当前上传文件的文件名称
String myFileName = file.getOriginalFilename();
//如果名称不为“”,说明该文件存在,否则说明该文件不存在
if(myFileName.trim() !=""){
System.out.println(myFileName);
//重命名上传后的文件名
//String fileName = AOSUtils.getDateTimeStr("yyyyMMddhhmmss")+ file.getOriginalFilename();
String fileName = AOSUtils.getDateTimeStr("yyyyMMddhhmmssSSS")+"."+fileExt;
// 获取web应用根路径,也可以直接指定服务器任意盘符路径
// ①获取相对路径
// String savePath =request.getSession().getServletContext().getRealPath("/")+ "uploaddata/";
// ②读取配置文件路径
// InputStream inputStream = null;
// inputStream =new UploadFile().getClass().getClassLoader().getResourceAsStream("uploadFileConfig.properties");
// Properties prop=new Properties();
// try {
// prop.load(inputStream);
// } catch (IOException e) {
// e.printStackTrace();
// //System.out.println("配置文件读取失败!");
// inDto.setAppMsg("上传目录配置文件读取失败!");
// }
// String savePath =prop.get("fileSavePath").toString();
//③从系统数据库读取路径
String savePath=WebCxt.getCfgOfDB("uploadfile_url_");
String path = savePath + fileName;
File localFile = new File(path);
if (!localFile.exists()) {
localFile.mkdirs();
}
file.transferTo(localFile);
Dto outDto = Dtos.newOutDto();
outDto.put("fileUrl", path);
outDto.setAppCode(AOSCons.SUCCESS);
outDto.setAppMsg("操作完成,文件上传成功。");
WebCxt.write(response, AOSJson.toJson(outDto));
}
}
//记录上传该文件后的时间
int finaltime = (int) System.currentTimeMillis();
System.out.println(finaltime - pre);
}
}
}
public void uploadFile(HttpServletRequest request,HttpServletResponse response) throws IllegalStateException, IOException {
Dto inDto = Dtos.newDto(request);
//创建一个通用的多部分解析器
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
//判断 request 是否有文件上传,即多部分请求
if(multipartResolver.isMultipart(request)){
//转换成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;
//取得request中的所有文件名
Iterator<String> iter = multiRequest.getFileNames();
while(iter.hasNext()){
//记录上传过程起始时的时间,用来计算上传时间
int pre = (int) System.currentTimeMillis();
//取得上传文件
MultipartFile file = multiRequest.getFile(iter.next());
if(file != null){
long size_ = file.getSize()/1024; //以KB为单位存储
long maxSize = NumberUtils.toLong(WebCxt.getCfgOfDB("uploadfile_maxsize_"));
if (size_ > maxSize) {
WebCxt.write(response, AOSCons.ERROR, AOSUtils.merge("操作被取消,文件大小不能超过{0}MB。", maxSize/1024));
return;
}
String[][] fileTypes = new String[][]{{"pdf","txt", "doc","docx", "xls","rar","PDF","TXT", "DOC","XLS","RAR"},{"gif", "jpg", "jpeg", "png", "bmp","GIF","JPG","JPEG","PNG","BMP"}};
//根据上传指定类型选择需要校验的文件类型
String[] fileTypeManager =null;
if(inDto.getInteger("fileType")==0){
fileTypeManager=fileTypes[0];
}else{
fileTypeManager=fileTypes[1];
}
String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1).toLowerCase();
if(!Arrays.<String>asList(fileTypeManager).contains(fileExt)){
WebCxt.write(response, AOSCons.ERROR, AOSUtils.merge("操作被取消,上传文件扩展名是不允许的扩展名{0}!",fileExt));
return;
}
//取得当前上传文件的文件名称
String myFileName = file.getOriginalFilename();
//如果名称不为“”,说明该文件存在,否则说明该文件不存在
if(myFileName.trim() !=""){
System.out.println(myFileName);
//重命名上传后的文件名
//String fileName = AOSUtils.getDateTimeStr("yyyyMMddhhmmss")+ file.getOriginalFilename();
String fileName = AOSUtils.getDateTimeStr("yyyyMMddhhmmssSSS")+"."+fileExt;
// 获取web应用根路径,也可以直接指定服务器任意盘符路径
// ①获取相对路径
// String savePath =request.getSession().getServletContext().getRealPath("/")+ "uploaddata/";
// ②读取配置文件路径
// InputStream inputStream = null;
// inputStream =new UploadFile().getClass().getClassLoader().getResourceAsStream("uploadFileConfig.properties");
// Properties prop=new Properties();
// try {
// prop.load(inputStream);
// } catch (IOException e) {
// e.printStackTrace();
// //System.out.println("配置文件读取失败!");
// inDto.setAppMsg("上传目录配置文件读取失败!");
// }
// String savePath =prop.get("fileSavePath").toString();
//③从系统数据库读取路径
String savePath=WebCxt.getCfgOfDB("uploadfile_url_");
String path = savePath + fileName;
File localFile = new File(path);
if (!localFile.exists()) {
localFile.mkdirs();
}
file.transferTo(localFile);
Dto outDto = Dtos.newOutDto();
outDto.put("fileUrl", path);
outDto.setAppCode(AOSCons.SUCCESS);
outDto.setAppMsg("操作完成,文件上传成功。");
WebCxt.write(response, AOSJson.toJson(outDto));
}
}
//记录上传该文件后的时间
int finaltime = (int) System.currentTimeMillis();
System.out.println(finaltime - pre);
}
}
}