如何将blob类型数据的图片数据从数据库中读取出来,并保存到本地呢?
代码如下:
定义一个实体类:
public class IdeaImgOutVo {
private byte[] photo;//图片
private String plNO;//手册编码
private String pictureName;//图片名字
public byte[] getPhoto() {
return photo;
}
public void setPhoto(byte[] photo) {
this.photo = photo;
}
public String getPlNO() {
return plNO;
}
public void setPlNO(String plNO) {
this.plNO = plNO;
}
public String getPictureName() {
return pictureName;
}
public void setPictureName(String pictureName) {
this.pictureName = pictureName;
}
}
sql文件:
<select id="outImg" resultMap="imgVos">
SELECT
e.PICTUREDATA as piture,
d.PLNO,
b.BLOCKCODE
from ET_PICTURE e left join ET_BLOCK b on e.BLOCKID = b.BLOCKID
join ET_PBLOCK c on c.BLOCKID = b.BLOCKID
join EM_PRODUCT d on d.PRODUCTID = c.PRODUCTID
WHERE e.BLOCKID = '105'
</select>
service:
@Service
public class IdeaImgOutServiceImpl implements IdeaImgOutService {
@Autowired
private IdeaImgOutDao ideaImgOutDao;
@Override
public List<IdeaImgOutVo> outImg() {
return ideaImgOutDao.outImg();
}
public R outImgsMain(){
try {
List<IdeaImgOutVo> vos = ideaImgOutDao.outImg();
for (IdeaImgOutVo v: vos) {
byte[] imgs = v.getPhoto();
File file = new File("e:\\picture\\"+v.getPlNO()+"\\IMGE");
if (!file.exists()){
file.mkdirs();
}
FileImageOutputStream outputStream = new FileImageOutputStream(new File("e:\\picture\\"+v.getPlNO()+"\\IMGE"+"\\"+v.getPictureName()+".jpg"));
outputStream.write(imgs,0,imgs.length);
outputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
return R.ok("图片保存完成");
}
}
Controller:
@Controller
@RequestMapping(API_PATH+API_VERSION+IMG)
@Api(description = "导出图片并保存")
public class IdeaImgOutController {
public static final String IMG = "img";
@Autowired
private IdeaImgOutServiceImpl ideaImgOutService;
@RequestMapping(value = "out")
@ResponseBody
public R outImg() {
ideaImgOutService.outImgsMain();
return R.ok("图片保存完成!");
}
}
dao、serivce接口此处就不写了,没有啥内容,以上思路就是 定义一个 byte【】数组类型的变量,以此接收blob类型的二进制数据,然后使用 FileImageOutputStream 图片输出流 将数据保存到本地。。
本文介绍如何从数据库中读取Blob类型的图片数据,并将其保存到本地的方法。通过定义byte数组接收二进制数据,使用FileImageOutputStream完成图片保存。

1185

被折叠的 条评论
为什么被折叠?



