1,数据库的字段用BLOB接受 hibernate映射blob
2,存储二维码
public static Blob StorageTwoDimensionCode(TbAssets assets) throws IOException{ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();//字节数组流 code.encoderQRCode(content, outputStream, "png",9); //这里的Blob是java.sql包中的 Blob codeimg = Hibernate.createBlob(outputStream.toByteArray()); //outputStream转一个blob,这里可以接收InputStream和byte[] outputStream.flush(); outputStream.close(); return codeimg; //返回一个blob }
3,如果要读出来,在页面显示
public void showCodeImg(){ TbAssets assets = assetsService.getAssetsById(asid); Blob codeimg = assets.getCodeImg(); try { BufferedInputStream inputStream = new BufferedInputStream(codeimg.getBinaryStream()); //把BLOB数据转为二进制流 BufferedOutputStream outputStream = new BufferedOutputStream(ServletActionContext.getResponse().getOutputStream()); byte[] b = new byte[1024]; int len = 0 ; while ((len=inputStream.read(b))!=-1) { outputStream.write(b, 0, len); } outputStream.flush(); inputStream.close(); outputStream.close(); } catch (Exception e) { e.printStackTrace(); } }