讀取blob型別圖片資料 儲存到本地
阿新 • • 發佈:2018-11-05
如何將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 圖片輸出流 將資料儲存到本地。。