附件上传与图片上传类似,在知识库以及话题中心中均有使用
上传文件的方法:
为了使文件成功上传,防止同名文件上传失败,对文件名进行重新命名,获取当前毫秒数作为名字
@RequestMapping("/fileUpload.action")
public Map<String, Object> fileUpload(MultipartHttpServletRequest multirequest) {
String realPath = AbsolutePathUtil.getAbsoluteStaticPath() + urlConfig.getFileUpload_Url();
Map<String, Object> map = new HashMap<>();
Iterator<String> itr = multirequest.getFileNames();
if (itr.hasNext()) {
MultipartFile multipartFile = multirequest.getFile(itr.next());
long size = multipartFile.getSize();
if (size > MAX_FILE_MAX) {
map.put("code", CodeEnum.BUSSINESSERROR);
map.put("msg", "文件不能超过10M");
return map;
}
String fileName = multipartFile.getOriginalFilename();
String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
if (!"zip".equalsIgnoreCase(suffix) && !"rar".equalsIgnoreCase(suffix)) {
map.put("code", CodeEnum.BUSSINESSERROR);
map.put("msg", "只能ZIP或RAR文件");
return map;
}
String current = String.valueOf(System.currentTimeMillis());
// System.currentTimeMillis()产生一个当前的毫秒,这个毫秒其实就是自1970年1月1日0时起的毫秒数,Date()其实就是相当于
fileName = current + "." + suffix;
File dir = new File(realPath);
if (!dir.exists()) {
dir.mkdirs();
}
String filePath = realPath + "/"+fileName;
File file = new File(filePath);
try {
multipartFile.transferTo(file);
map.put("code", CodeEnum.SUCCESS);
map.put("savePath", urlConfig.getFileUpload_Url()+"/"+fileName);
System.out.println(map.get("savePath"));
return map;
} catch (Exception e) {
map.put("code", CodeEnum.SERVERERROR);
map.put("msg", "服务器异常,上传失败");
return map;
}
}
return map;
}
删除文件:
@RequestMapping("/fileDelete.action")
public Map<String, Object> fileDelete(String fileName) {
Map<String, Object> map = new HashMap<>();
File file = new File(AbsolutePathUtil.getAbsoluteStaticPath()+fileName);
try {
if (file.exists()) {
file.delete();
}
map.put("code", CodeEnum.SUCCESS);
return map;
} catch (Exception e) {
map.put("code", CodeEnum.SERVERERROR);
map.put("msg", "服务器异常,删除失败");
return map;
}
}