/**
* 图片、文件的上传
*
* @author
* @date
* @version 1.0
*/
public class UploadUtils{
// 上传图片路径
public static final String KEY_UPLOAD_FILE = "upload-file";
/**
* 图片上传到服务器配置的路径
*
* @author
* @param CommonsMultipartFile file
* 上传的图片文件
* @param saveFolder
* 图片保存的文件夹
* @param fileSaveName
* 图片保存名称
* @return Map<String, Object> 返回处理信息
* @throws IOException
*/
protected Map<String, Object> imgUpload(CommonsMultipartFile file,String saveFolder,
String fileSaveName) throws IOException {
Map<String, Object> resultMap = new HashMap<String, Object>();
if (file == null) {
resultMap.put(this.KEY_STATUS, false);
resultMap.put(this.KEY_MESSAGE, "文件不存在");
return resultMap;
}
if (!ImageUtil.fileIsImage(file)) {
resultMap.put(this.KEY_STATUS, false);
resultMap.put(this.KEY_MESSAGE, "您上传的图片无效,请重新上传!");
return resultMap;
}
// 服务器相对路径
String savePath = this.getSavePath(KEY_UPLOAD_FILE) + saveFolder + "/";
String destFileDirs = request.getSession().getServletContext().getRealPath(savePath);
destFileDirs = destFileDirs.replaceAll("\\\\", "/");
File dir = new File(destFileDirs);
// 服务器端创建目录
if (!dir.exists()) {
dir.mkdirs();
}
if (fileSaveName == null) {
fileSaveName = UUID.randomUUID().toString().replace("-", "");
}
//获取上传文件后缀名
String fileSuffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
String destFilePath = destFileDirs + "/" + fileSaveName + fileSuffix;
File destFile = new File(destFilePath);
file.transferTo(destFile);
// 返回保存文件名称
resultMap.put(this.KEY_STATUS, true);
resultMap.put(this.KEY_MESSAGE, savePath + fileSaveName+ fileSuffix);
return resultMap;
}
/**
* 限制图片大小(上传到服务器配置的路径)
*
* @author
* @param CommonsMultipartFile file
* 图片文件
* @param saveFolder
* 图片保存文件夹
* @param fileSaveName
* 图片保存名称
* @param limitSize
* 限制图片大小(单位M)
* @return Map<String, Object> 返回处理信息
* @throws IOException
*/
protected Map<String, Object> imgUploadLimitSize(CommonsMultipartFile file,String saveFolder,
String fileSaveName, int limitSize) throws IOException {
Map<String, Object> resultMap = new HashMap<String, Object>();
if (file == null) {
resultMap.put(this.KEY_STATUS, false);
resultMap.put(this.KEY_MESSAGE, "文件不存在");
return resultMap;
}
if (!ImageUtil.fileIsImage(file)) {
resultMap.put(this.KEY_STATUS, false);
resultMap.put(this.KEY_CAPTCHA, "img-no");
resultMap.put(this.KEY_MESSAGE, "您上传的图片无效,请重新上传!");
return resultMap;
}
long limitSizeBytes = limitSize * 1024 * 1024;// 把单位M转换为bytes
if (file.getSize() > limitSizeBytes) {
resultMap.put(this.KEY_STATUS, false);
resultMap.put(this.KEY_CODE, "img-limit");
resultMap.put(this.KEY_MESSAGE, "您上传的文件超出限制大小" + limitSize + "M");
return resultMap;
}
// 服务器相对路径
String savePath = this.getSavePath(KEY_UPLOAD_FILE) + saveFolder + "/";
String destFileDirs = request.getSession().getServletContext().getRealPath(savePath);
destFileDirs = destFileDirs.replaceAll("\\\\", "/");
File dir = new File(destFileDirs);
// 服务器端创建目录
if (!dir.exists()) {
dir.mkdirs();
}
if (fileSaveName == null) {
fileSaveName = UUID.randomUUID().toString().replace("-", "");
}
//获取上传文件后缀名
String fileSuffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
String destFilePath = destFileDirs + "/" + fileSaveName + fileSuffix;
File destFile = new File(destFilePath);
file.transferTo(destFile);
// 返回保存文件名称
resultMap.put(this.KEY_STATUS, true);
resultMap.put(this.KEY_MESSAGE, savePath + fileSaveName+ fileSuffix);
return resultMap;
}
/**
* 上传文件
*
* @author
* @param CommonsMultipartFile file
* 文件
* @param saveFolder
* 文件保存文件夹
* @param fileSaveName
* 文件保存名称
* @param limitSize
* 限制文件大小(单位M)
* @return Map<String, Object> 返回处理信息
* @throws IOException
*/
protected Map<String, Object> uploadFileLimitSize(CommonsMultipartFile file,String saveFolder,
String fileSaveName, int limitSize) throws IOException {
Map<String, Object> resultMap = new HashMap<String, Object>();
if (file == null) {
resultMap.put(this.KEY_STATUS, false);
resultMap.put(this.KEY_MESSAGE, "文件不存在");
return resultMap;
}
long limitSizeBytes = limitSize * 1024 * 1024;// 把单位M转换为bytes
if (file.getSize() > limitSizeBytes) {
resultMap.put(this.KEY_STATUS, false);
resultMap.put(this.KEY_CODE, "img-limit");
resultMap.put(this.KEY_MESSAGE, "您上传的文件超出限制大小" + limitSize + "M");
return resultMap;
}
// 服务器相对路径
String savePath = this.getSavePath(KEY_UPLOAD_FILE) + saveFolder + "/";
String destFileDirs = request.getSession().getServletContext().getRealPath(savePath);
destFileDirs = destFileDirs.replaceAll("\\\\", "/");
File dir = new File(destFileDirs);
// 服务器端创建目录
if (!dir.exists()) {
dir.mkdirs();
}
if (fileSaveName == null) {
fileSaveName = UUID.randomUUID().toString().replace("-", "");
}
//获取上传文件后缀名
String fileSuffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
String destFilePath = destFileDirs + "/" + fileSaveName + fileSuffix;
File destFile = new File(destFilePath);
file.transferTo(destFile);
// 返回保存文件名称
resultMap.put(this.KEY_STATUS, true);
resultMap.put(this.KEY_MESSAGE, savePath + fileSaveName+ fileSuffix);
return resultMap;
}
/**
* 上传文件到系统类路径下
*
* @author
* @param CommonsMultipartFile file
* 文件
* @param fileName
* 文件名
* */
protected String fileUpload2ClassPath(CommonsMultipartFile file, String fileName)
throws IOException {
String path = UploadUtilsController.class.getResource("/").getPath();
String destFilePath = path + "/" + fileName;
File destFile = new File(destFilePath);
file.transferTo(destFile);
return destFilePath;
}
/**
* 从上下文获取上传路径
*
* @author
* @param 文件路径KEY
* @return 返回路径
* */
private String getSavePath(String key) {
return request.getSession().getServletContext().getInitParameter(key);
}
}