首先在数据库建一张表
数据库我这里用的是MySql,数据类型是longblob,最大容量为4G。
然后新建实体类
用byte[]存储二进制
控制器
@RequestMapping("/upload")
public String upload( @RequestParam("file") MultipartFile file,HttpServletRequest request) throws IOException {
if(file.isEmpty()){
return null;
}
//根据时间戳产生新的文件名
String fileName = System.currentTimeMillis()+file.getOriginalFilename();
byte[] b=file.getBytes();
Image image=new Image(fileName,b);
String path=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+"/images/download/"+fileName;
imageService.save(image);
return path;
}
简单说就是将file转成二进制存储到数据库,再返回获取文件的路径
所以需要我们写一个方法去获取图片
@RequestMapping(value = "/images/{id}", method = RequestMethod.GET)
public ResponseEntity<byte[]> getImage(@PathVariable("id")String id) {
Image image = imageService.getById(id);
return ResponseEntity.ok().contentType(MediaType.IMAGE_JPEG).body(image.getImage());
}
方法也很简单,其实就是把文件读出来,这里的MediaType类型支持很多种
版权声明:本文为weixin_43722048原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。