控制层
@RequestMapping(value = "upload",method=RequestMethod.POST)
public void upload(MultipartHttpServletRequest multiRequest,HttpServletResponse response, HttpServletRequest request, MultipartFile myfile) {
System.out.println(multiRequest);
if(multiRequest!=null){
Iterator<String> filesNames = multiRequest.getFileNames(); // 获得所有的文件名
Set<String> resultFilePaths = new HashSet<String>();
while (filesNames.hasNext()) { // 迭代,对单个文件进行操作
String fileName = filesNames.next();
MultipartFile file = multiRequest.getFile(fileName);
Files files=fileService.saveFile(file, request);
String originalFilename = file.getOriginalFilename();
if (!file.isEmpty()) {
System.out.println("");
// String resultFilePath = DateUtils.getCurrentDateStr() +File.separator + GeneratorKey.genaraId() + originalFilename.substring(originalFilename.lastIndexOf('.'), originalFilename.length());
// FileUtils.copyInputStreamToFile(file.getInputStream(), new File(filePath, resultFilePath));
// resultFilePaths.add(type.getCode()+File.separator+resultFilePath);
}
JsonUtils.printCommonObject(response, "{\"code\":\"success\"}");
}
}else JsonUtils.printCommonObject(response, "{\"code\":\"error\"}");
}
服务层
/**
* 保持一个文件信息,并返回文件对象
*
* @param myfile
* 上传的文件名称
* @param request
* 请求对象
* @return 返回保持后的文件信息(包含文件主键)
*/
public Files saveFile(MultipartFile myfile, HttpServletRequest request) {
Files file = copyFile(myfile, null, request);
if (file != null)
this.baseDao.save(file);
return file;
}
private Files copyFile(MultipartFile myfile, Files files,
HttpServletRequest request) {
Files file = files;
Users user=(Users) request.getSession().getAttribute("currentUser");
if (myfile!=null&&myfile.isEmpty()) {
System.out.println("文件未上传");
} else {
String realName = myfile.getOriginalFilename();
String fileName = null;
if(user!=null)
fileName = System.currentTimeMillis()+""+user.getUserId()
+ realName.substring(realName.lastIndexOf("."));
else fileName = System.currentTimeMillis()
+ realName.substring(realName.lastIndexOf("."));
String realUrl=getRealPath(realName);
String realPath = request.getSession().getServletContext().getRealPath("")+"/"+realUrl;
try {
FileUtils.copyInputStreamToFile(myfile.getInputStream(),
new File(realPath, fileName));
} catch (Exception e) {
e.printStackTrace();
}
if (file == null)
file = new Files();
file.setFileName(myfile.getOriginalFilename());
file.setFileSize(myfile.getSize());
BufferedImage image=null;
try {
image = ImageIO.read(myfile.getInputStream());
} catch (IOException e) {
System.out.println(e.getMessage());
}
if (image != null)file.setIsPic(true);
else file.setIsPic(false);
file.setFileType(myfile.getContentType());
file.setCreateTime(DateUtils.getTimestampByMillis());
file.setUrl(realUrl + "/" + fileName);
file.setStatus(true);
if(user!=null)
file.setUsers(user.getUserId());
}
return file;
}
private String getRealPath(String fileName){
fileName = fileName.substring(fileName.lastIndexOf(".")).trim()
.toLowerCase();
if (".gif".equals(fileName) || ".jpeg".equals(fileName)
|| ".jpg".equals(fileName) || ".bmp".equals(fileName)
|| ".png".equals(fileName))
return "resource\\file\\img";
else
return "resource\\file\\fil";
}