1.NewsController
@RequestMapping(path = {"/uploadImage/"},method = {RequestMethod.POST})
@ResponseBody
public String uploadImage(@RequestParam("file")MultipartFile file){
try{
String fileUrl = newsService.saveImage(file);
if (fileUrl==null)
return ToutiaoUtil.getJSONString(1,"上传图片失败");
return ToutiaoUtil.getJSONString(0,fileUrl);
} catch (Exception e) {
logger.error("上传图片失败"+e.getMessage());
return ToutiaoUtil.getJSONString(1,"上传失败");
}
}
2.NewsService
public String saveImage(MultipartFile file) throws IOException {
int dotPos = file.getOriginalFilename().lastIndexOf(".");
if (dotPos < 0) {
return null;
}
//读取后缀名 2 Service中
//toLowerCase() 全部转成小写
String fileExt = file.getOriginalFilename().substring(dotPos + 1).toLowerCase();
if (!ToutiaoUtil.isFileAllowed(fileExt)) {
return null;
}
String fileName = UUID.randomUUID().toString().replaceAll("-", "") + "." + fileExt;
Files.copy(file.getInputStream(), new File(ToutiaoUtil.IMAGE_DIR + fileName).toPath(),
StandardCopyOption.REPLACE_EXISTING); //存在就替换掉
return ToutiaoUtil.TOUTIAO_DOMAIN + "image?name=" + fileName;
}
3.ToutiaoUtil 中的
//图片上传 3 判断后缀名
//域名
public static String TOUTIAO_DOMAIN = "http://127.0.0.1:8080/";
public static String[] IMAGE_FILE_EXT = new String[]{"png","jpg","bmp"};
public static String IMAGE_DIR="D:\\BaiduNetdiskDownload\\叶神\\我的中级\\images\\";
public static boolean isFileAllowed(String fileExt){
for (String ext:IMAGE_FILE_EXT
) {
if (ext.equals(fileExt))
return true;
}
return false;
}
POSTMAN
上传图片
下载图片
NewsController
@RequestMapping(path = {"/image"}, method = {RequestMethod.GET})
@ResponseBody
public void getImage(@RequestParam("name") String imageName,
HttpServletResponse response) {
try {
response.setContentType("image/jpeg");
StreamUtils.copy(new FileInputStream(new
File(ToutiaoUtil.IMAGE_DIR + imageName)), response.getOutputStream());
} catch (Exception e) {
logger.error("读取图片错误" + imageName + e.getMessage());
}
}
用到的工具POSTMAN