上传头像的时候,如果把图片上传至服务器,那么数据库中建议存储相对路径,页面显示的时候就可以以相对路径的形式获取。如果以二进制的形式直接将文件或者图片上传到数据库中,那么读取的时候也是通过数据库的byte[]数组读取。首先数据库存储的字段要设置为blob。
上传不在介绍,就是以byte数组去存储。读取的时候:
@RequestMapping("/showImg")
@ResponseBody
public ResponseEntity<byte[]> showImg(HttpSession session){
User user = (User)session.getAttribute("user");
byte[] headImg = user.getHeadImg();
ResponseEntity<byte[]> entity = new ResponseEntity<byte[]>(headImg,HttpStatus.OK);
return entity;
}
前台可以利用<img>属性读取:
<img src="user/showImg">
下载文件同样如此。。需要加上两行代码:(数据库只存储文件的后缀就行了。)
HttpHeaders heads = new HttpHeaders();
heads.setContentDispositionFormData("attachment", user.getImgName()+"."+user.getImgType());
ResponseEntity<byte[]> entity = new ResponseEntity<byte[]>(headImg,heads,HttpStatus.OK);