操作BLOB文件数据

1.
数据库中的字段:private Blob pdf;

2.
DAO文件操作:插入
SessionFactory sf = getHibernateTemplate().getSessionFactory();
Session s = sf.openSession();

Transaction tran=s.beginTransaction();
transientInstance.setPdf(Hibernate.createBlob(new byte[1]));
s.save(transientInstance);
s.flush();
s.refresh(transientInstance,LockMode.UPGRADE);
Blob blob=transientInstance.getPdf();
InputStream is;
is = blob.getBinaryStream();
FileInputStream img = null;
try {
System.out.println("dao filePaht 11 == " + filePath);
String filePath1 = "";
try {
filePath1 = new String(filePath.getBytes("iso8859-1"),"utf-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("dao filePaht 22 == " + filePath1);
img = new FileInputStream(filePath1);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Blob images = null;
try {
images = (Blob) Hibernate.createBlob(img);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

transientInstance.setPdf(images);
System.out.println("save dao == " + transientInstance.getPdf());
s.save(transientInstance);

tran.commit();

DAO操作 输出:
public String menuPdf(){

response = ServletActionContext.getResponse();

System.out.println("id == " + id);
menu = treeService.findById(id);
System.out.println("blob pdf == " + menu.getPdfid());
Nipdf nipdf = pdfService.findById(menu.getPdfid());
String fileName = nipdf.getName();

if(nipdf.getPdf() != null){
System.out.println("有BOLB文档了");


//Nipdf ni = pdfList.get(i);
try {
//从数据库中要读取出来
System.out.println(nipdf.getPdf().length());
InputStream is = nipdf.getPdf().getBinaryStream();
//在把写到一个图片格式的文件里
FileOutputStream fos = new FileOutputStream("e:\\out_" + nipdf.getName());

byte[] buffer = new byte[1024];
int len = 0;
//从数据库中读取到指定的字节数组中
while((len = is.read(buffer) )!= -1){
//从指定的数组中读取,然后输出来,所以这里buffer好象是连接inputStream和outputStream的一个东西
fos.write(buffer,0,len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}
}

return SUCCESS;

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值