@Controller
@RequestMapping("/rest")
public class ImageController {
@Value("${IMAGE_BASE_PATH}")
private String path;
@Value("${IMAGE_BASE_URL}")
private String url;
private static final String[] IMAGE_TYPE = new String[] {".jpg",".jpeg",".png",".gif",".bmp"};
@RequestMapping(value="/pic/upload",method=RequestMethod.POST,produces=MediaType.TEXT_PLAIN_VALUE)
@ResponseBody
public String imageUpload(@RequestParam("uploadFile")MultipartFile multipartFile) {
if(multipartFile == null) {
return JsonUtils.objtojson(ImageUploadResult.error("文件为空"));
}
//校验图片
boolean isLegal = false;
//1,校验图片的后缀
//获取原来的文件名
String oldName = multipartFile.getOriginalFilename();
//获取文件后缀
String oldSuffix = null;
for (String suffix : IMAGE_TYPE) {
if(StringUtils.endsWithIgnoreCase(oldName, suffix)) {
oldSuffix = suffix;
isLegal = true;
break;
}
}
if(!isLegal) {
return JsonUtils.objtojson(ImageUploadResult.error("文件类型不合法"));
}
//2,校验是否为图片
try {
BufferedImage bufferedImage = ImageIO.read(multipartFile.getInputStream());
} catch (IOException e) {
e.printStackTrace();
return JsonUtils.objtojson(ImageUploadResult.error("文件内容不匹配"));
}
//执行图片的上传
//1,获取图片的完整路径 返回文件对象
File dest = getAbsPath(path,oldSuffix);
//2,执行存储
try {
multipartFile.transferTo(dest);
}catch (IOException e) {
e.printStackTrace();
return JsonUtils.objtojson(ImageUploadResult.error("图片上传失败!原因为"+e.getMessage()));
}
//3,根据path生成url
//获取绝对路径
String absPath = dest.getAbsolutePath();
String url1 = StringUtils.replace(StringUtils.replace(absPath, "\\", "/"), path, url);
String string = JsonUtils.objtojson(ImageUploadResult.success(url1));
System.out.println(string);
return string;
}
/**
*
* @param path2 存储的目录
* @param oldSuffix 文件后缀
* @return 文件对象
*/
private File getAbsPath(String path2, String oldSuffix) {
String dateStr = new DateTime().toString("/yyyy/MM/dd");
File file = new File(path2, dateStr);
if(!file.exists()) {
file.mkdirs();
}
String newName = UUID.randomUUID().toString()+oldSuffix;
File imgfile = new File(file, newName);
return imgfile;
}
}