读取oracle blob字段内容并以文件形式下载

这个也是从网找的代码攒的,做个记录,以后可能会用得着。表里即存了文件的内容,也存了文件的类型。

 

String xh = request.getParameter("xh")==null?"":request.getParameter("xh").toString(); 
Connection con = JdbcUtilsHelper.getConnection();     
PreparedStatement pstm = con.prepareStatement("select wjnr,wjlx from table where xh=?");
pstm.setString(1, xh);
ResultSet rs = pstm.executeQuery();

if(rs.next()){
 Blob blob = rs.getBlob(1);
 String wjlx = rs.getString(2);
 if(blob != null){
  InputStream ins = blob.getBinaryStream();
  
  response.setContentType("application/x-msdownload");
  response.addHeader("Content-Disposition", "attachment; filename=data."+wjlx);
  
  OutputStream outStream = response.getOutputStream();
  
  byte[] bytes = new byte[1024];
  int len = 0;
  while ((len=ins.read(bytes))!=-1) {
      outStream.write(bytes,0,len);
  }
  out.clear();
  out = pageContext.pushBody();

  ins.close();
  outStream.close();
  outStream = null;
  con.commit();
  con.close(); 
 }else{
  out.print("下载文件失败!文件内容为空!");
 } 
}else{
 out.print("下载文件失败!没有找到相关记录!");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值