二进制存储图片或文件的读取与下载

上传头像的时候,如果把图片上传至服务器,那么数据库中建议存储相对路径,页面显示的时候就可以以相对路径的形式获取。如果以二进制的形式直接将文件或者图片上传到数据库中,那么读取的时候也是通过数据库的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);

猜你喜欢

转载自blog.csdn.net/weixin_42412462/article/details/81276187