jsp读取oracle数据库中blob字段生成图形文件的问题。
jsp访问oracle数据库正常!
jsp代码如下:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" %>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>
<%@ page import="javax.servlet.*"%>
<%@ page import="javax.servlet.http.*"%>
............
<%
String filepath="C:\\temp.bmp";
FileOutputStream fileOutStream = null;
InputStream inStream = null;
//读出流用getBinaryStream()方法。
inStream = rs.getBinaryStream(1);
//图片的有效长度。
int size = inStream.available();
byte[] pictureData = new byte[size];
//读取输入流的数据到指定的数组。只是文件的有效部分。
inStream.read(pictureData);
try {
//将图片文件输出到指定目录。
fileOutStream = new FileOutputStream(filepath);
//写入数据。
for(int i=0;i<pictureData.length;i++){
fileOutStream.write(pictureData[i]);
}
}
catch(Exception e)
{
System.err.println("Error: " + e.toString());
}
fileOutStream.close();
%>
执行过程中没有错误,然而打开C:\temp.bmp文件不能显示图片,是白板?
看temp.bmp属性,无论数据库中图片大小为多少,temp.bmp文件大小都是256byte,占用空间正常,奇怪!int size = inStream.available(); 不对吗?
请各位帮忙看看!
问题点数:50、回复次数:3Top
1 楼sgdb(神天月晓)回复于 2003-11-03 23:47:08 得分 0
int size = (int) inStream.available();
byte[] pictureData = new byte[size];
//读取输入流的数据到指定的数组。只是文件的有效部分。
inStream.read(pictureData,0,size);
inStream.close();
try {
//将图片文件输出到指定目录。
fileOutStream = new FileOutputStream(filepath);
//写入数据。
fileOutStream.write(pictureData);
}
}
catch(Exception e)
{
System.err.println("Error: " + e.toString());
}
fileOutStream.close();
Top
2 楼kelly119(迷)回复于 2003-11-04 16:33:00 得分 0
to sgdb(神天月晓)
还是不行啊!
我在
int size = (int) inStream.available();
后加一句
out.println(size);
输出还是255。Top
3 楼sgdb(神天月晓)回复于 2003-11-04 19:33:30 得分 50
inStream = rs.getBlob("图片的字段名").getBinaryStream();Top




