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

1.写入数据库

将存储图片的字段类型设置为mediumblob(或其他三种)

  1. tinyblob:仅255个字符
  2. blob:最大限制到65K字节
  3. mediumblob:限制到16M字节
  4. longblob:可达4GB
    Mysql使用BLOB类型读写图片(文件)数据_第1张图片

controller

  1. 获取页面传输的MultipartFile参数
  2. 获取MultipartFile的字节数组
    Mysql使用BLOB类型读写图片(文件)数据_第2张图片

service

/**
* 保存用户图片
*/
public void savePicture(PageData pd);

serviceImpl

/**
* 保存用户图片
*/
@Override
public void savePicture(PageData pd) {
	usersMapper.savePicture(pd);
}

获取数据后直接操作即可

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

保存成功

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

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 showPicture(String ryid);

映射文件

根据条件直接获取存放图片(文件)字段即可
Mysql使用BLOB类型读写图片(文件)数据_第5张图片

前端获取

  • URL直接请求即可在这里插入图片描述
    Mysql使用BLOB类型读写图片(文件)数据_第6张图片

你可能感兴趣的:(Mysql使用BLOB类型读写图片(文件)数据)