1.写入数据库
将存储图片的字段类型设置为mediumblob(或其他三种)
- tinyblob:仅255个字符
- blob:最大限制到65K字节
- mediumblob:限制到16M字节
- longblob:可达4GB
controller
- 获取页面传输的MultipartFile参数
- 获取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直接请求即可