Mysql使用BLOB类型读写图片(文件)数据

1.写入数据库

将存储图片的字段类型设置为mediumblob(或其他三种)
  1. tinyblob:仅255个字符
  2. blob:最大限制到65K字节
  3. mediumblob:限制到16M字节
  4. longblob:可达4GB
    在这里插入图片描述
controller
  1. 获取页面传输的MultipartFile参数
  2. 获取MultipartFile的字节数组
    在这里插入图片描述
service
/**
* 保存用户图片
*/
public void savePicture(PageData pd);
serviceImpl
/**
* 保存用户图片
*/
@Override
public void savePicture(PageData pd) {
	usersMapper.savePicture(pd);
}
获取数据后直接操作即可

在这里插入图片描述

保存成功

在这里插入图片描述

2.读取数据

controller
/**
* 图片回显
*/
@RequestMapping(value="/showPicture")
public void showPicture(String ryid, HttpServletResponse response) throws Exception{
   //设置头部
    response.setContentType("image/jpeg");
    //根据Id获取数据
    byte[] img = usersService.showPicture(ryid);
    response.getOutputStream().write(img);
    response.flushBuffer();
}
service
public byte[] showPicture(String ryid);
serviceImpl
	@Override
	public byte[] showPicture(String ryid) {
		//调用mapper
		Map map = usersMapper.showPicture(ryid);	
		//如果返回数据包含'zp'(数据库字段)且数据不为空
		if (map != null && map.containsKey("zp")){
			//获取value且转为byte[]返回
			return (byte[]) map.get("zp");
		}else {
			return null;
		}
	}
Mapper
Map<String, Object> showPicture(String ryid);
映射文件

根据条件直接获取存放图片(文件)字段即可
在这里插入图片描述

前端获取
  • URL直接请求即可在这里插入图片描述
    在这里插入图片描述
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值