这是我以前写的代码,放在action里。在pojo类中对应为byte[]类型,clxxb是一个pojo类,clxxbgetClpic()得到对应的字节数组byte[]。其实输出文件就是输出一个字节流。希望对你有帮助。
InputStream input=clxxbgetClpic()getBinaryStream();
byte[] buffer=new byte[inputavailable()];
ServletOutputStream out=responsegetOutputStream();
int length=0;
while((length=inputread(buffer))!=-1){
outwrite(buffer,0,length);
}
outflush();
outclose();
在OracleQueryBean类中增加一个函数,来进行读取,具体代码如下:
/
根据在数据库中的ID进行读取
@param strID 字段ID
@param w 需要缩到的宽度
@param h 需要缩到高度
@return
/
public byte[] GetImgByteById(String strID, int w, int h){
//Systemoutprintln("Get img data which id is " + nID);
if(myConnection == null)
thisgetConnection();
byte[] data = null;
try {
Statement stmt = myConnectioncreateStatement();
ResultSet myResultSet = stmtexecuteQuery("select " + thisstrIDName + " from " + thisstrTabName + " where " + thisstrIDName + "=" + strID);
StringBuffer myStringBuffer = new StringBuffer();
if (myResultSetnext()) {
javasqlBlob blob = myResultSetgetBlob(thisstrImgName);
InputStream inStream = blobgetBinaryStream();
try {
long nLen = bloblength();
int nSize = (int) nLen;
//Systemoutprintln("img data size is :" + nSize);
data = new byte[nSize];
inStreamread(data);
inStreamclose();
} catch (IOException e) {
Systemoutprintln("获取数据失败,原因:" + egetMessage());
}
data = ChangeImgSize(data, w, h);
}
Systemoutprintln(myStringBuffertoString());
myConnectioncommit();
myConnectionclose();
} catch (SQLException ex) {
Systemoutprintln(exgetMessage());
}
return data;
}
你好:
BLOB (binary large object)----二进制大对象,是一个可以存储二进制文件的容器。
在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。
BLOB是一个大文件,典型的BLOB是一张或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库)。
根据Eric Raymond的说法,处理BLOB的主要思想就是让文件处理器(如数据库管理器)不去理会文件是什么,而是关心如何去处理它。
但也有专家强调,这种处理大数据对象的方法是把双刃剑,它有可能引发一些问题,如存储的二进制文件过大,会使数据库的性能下降。在数据库中存放体积较大的多媒体对象就是应用程序处理BLOB的典型例子。
以上就是关于java数据库blob字段的下载(读取)全部的内容,包括:java数据库blob字段的下载(读取)、怎样从数据库中调用blob图片 并把它显示在网页上、数据库中blob类型指什么类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)