導航:首頁 > 編程語言 > javablobbyte

javablobbyte

發布時間:2023-08-19 18:17:37

java中 如何將存放在資料庫中的pdf、doc、jpg等文件讀出來(二進制形式存放在數據)

在資料庫中存放這些個二進制文件的欄位是BLOB,oracle和MysqL裡面都是
java中讀取 BLOB數據:
首先做查詢,拿到查詢結果ResultSet rs = XXXX (和普通數據查詢一樣)
然後:Blob blob = rs.getBlob("欄位名"); 拿到你的Blob ,
得到文件的二進制流:InputStream binaryStream= blob.getBinaryStream();,
你的文件數據就在這個流當中,你想怎麼用就怎麼取,比如,讀出來存到一個byte[]中,以便序列化傳輸,讀出來構造成一個File直接存放到本地等等。

舉個例子吧:從這個binaryStream中讀取數據到byte[]的方法,
////////---------------------
/**
* 從binaryStream中讀取數據到byte[]的方法
* @param in 即binaryStream
* @return
* @throws Exception
*/
public static byte[] readStreamToByteArray(InputStream in) throws Exception{
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = -1;
while((len = in.read(buffer)) != -1) {
outputStream.write(buffer, 0, len);
}
outputStream.close();
in.close();
return outputStream.toByteArray();
}

//

jsp頁面中如何將資料庫中的blob欄位轉為String顯示在頁面上(java)

jsp先從資料庫獲取blob欄位的值,然後通過流的方式讀取,轉換成string才可以展示的。
參考代碼如下:
從資料庫中讀取Blob類型數據後,要轉換成String類型,即轉換成InputStream,再從InputStream轉成byte[],再到String即可。如下:
//把資料庫中blob類型轉換成String類型
public String convertBlobToString(Blob blob){

String result = "";
try {
ByteArrayInputStream msgContent =(ByteArrayInputStream) blob.getBinaryStream();
byte[] byte_data = new byte[msgContent.available()];
msgContent.read(byte_data, 0,byte_data.length);
result = new String(byte_data);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}

⑶ java中向oracle資料庫blob欄位中插入byte[]相關問題, 高人來.

你把一下的代碼加入到一個類里就可以了,我已經測試過了,由於字數的限制不能把完整的類發上來。

String PSQL = "insert into TESTBLOB(NUMCONTENTID,BLOBCONTENT) " + "values(?,EMPTY_BLOB())";
String SSQL = "select BLOBCONTENT from TESTBLOB where NUMCONTENTID = ? for update";
String USQL = "update TESTBLOB set BLOBCONTENT = ? where NUMCONTENTID = ?";

public WriteBLOB() throws Exception {
Connection conn = null;
try {
conn = getConnection();
conn.setAutoCommit(false);
ByteBuffer bb = ByteBuffer.allocate(10836);
bb.position(0);
bb.putInt(1);
//調用 insertBLOB 方法 的contentid 應該使用序列這里為了簡單就直接寫死了
//下面的插入方式應該是你想要的方法 在資料庫中會看到 0000 0001 0000 0000 0000....
//但是你這里好像沒有真正的是用 ByteBuffer
byte [] b1 = bb.array();
insertBLOB(conn, 1, b1);
//下面是使用 ByteBuffer 後的插入 在資料庫中會看到 0000 0001
//不知道你想要什麼樣子的,你自己選擇不吧
bb.flip();
byte [] b2 = new byte [bb.remaining()];
bb.get(b2);
insertBLOB(conn, 2, b2);
} catch (Exception ex) {
ex.printStackTrace();
conn.rollback();
} finally {
if (conn != null)
conn.close();
}
}

public void insertBLOB(Connection conn, int contentid, byte[] content)
throws Exception {
PreparedStatement pstmt = null;
PreparedStatement pstmt2 = null;
int id = contentid;
try {
pstmt = conn.prepareStatement(PSQL);
pstmt2 = conn.prepareStatement(USQL);
pstmt.setInt(1, id);
try {
pstmt.executeUpdate();//在資料庫中插入空對象
} catch (SQLException ex) {
ex.printStackTrace();
}
pstmt = conn.prepareStatement(SSQL);
pstmt.setInt(1, id);
ResultSet rs = pstmt.executeQuery();//查詢新插入的記錄
oracle.sql.BLOB pc = null;
while (rs.next()) {
pc = (oracle.sql.BLOB) rs.getBlob(1);
}
byte[] data = content;
pc.putBytes(1, data);
pstmt2.setBlob(1, pc);
pstmt2.setInt(2, id);
pstmt2.executeUpdate();
} finally {
try {
pstmt.close();
pstmt2.close();
} catch (Exception EE) {
}
}
return;
}

⑷ java 中 blob轉字元串

//字元串轉blob
String str="哈哈哈哈哈哈";
java.sql.Blob bl=new SerialBlob(str.getBytes());
//blob轉字元串
BufferedReader bf=new BufferedReader(new InputStreamReader(bl.getBinaryStream()));
String temp="";
StringBuffer sb=new StringBuffer();
while((temp=bf.readLine())!=null)
{
sb.append(temp);
}

System.out.println(sb.toString());

⑸ 資料庫里存儲的圖片欄位定義類型為blob,java里對應的類型為byte[],怎麼將圖片顯示到jsp頁面

這個試下吧.
....
<body>
<%
//獲取圖片對象(根據主鍵)的sql語句
String showImage = " select * "+
" from 存放圖片的表 "+
" where id='1' " ;

BufferedInputStream inputImage = null;

try{
//conn為一個Connection對象
Statement st = conn.createStatement();
//獲取結果集
ResultSet rs=st.executeQuery(showImage);
//輸出文件名
String filename="";
if(rs.next()) {
Blob blob = (Blob)rs.getBlob("BINARYFILE");
filename=rs.getString("FILENAME");
//讀取圖片位元組到數據流中
inputImage = new BufferedInputStream(blob.getBinaryStream());
}

BufferedImage image = null;
image=ImageIO.read(inputImage);
//獲取響應的輸出流
ServletOutputStream so = response.getOutputStream();
//創建圖片到頁面
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(so);
encoder.encode(image);
inputImage.close();
}
%>
</body>
<%
catch(Exception e){

}
finally{
closeConn(conn);
}
%>

閱讀全文

與javablobbyte相關的資料

熱點內容
迅雷下載總出現jsp 瀏覽:150
創建網頁用什麼編程語言 瀏覽:526
考研哪個app好 瀏覽:30
計算機網路的概念是什麼 瀏覽:625
網路硬碟存儲製作 瀏覽:4
iphone怎麼備份數據到電腦 瀏覽:41
微信小程序報表控制項 瀏覽:722
ipad添加不了qq郵箱賬號和密碼 瀏覽:503
matlab中文文件名 瀏覽:236
excel是啥類型文件 瀏覽:471
安慶培訓編程怎麼選 瀏覽:817
vs2010mfc工具箱 瀏覽:402
刪除文件重置win10怎麼恢復 瀏覽:180
新裝win10有線連不上 瀏覽:785
資料庫商品名唯一怎麼標注 瀏覽:214
電信5g網路什麼時候出 瀏覽:626
手機如何把視頻打包到文件夾裡面 瀏覽:248
excel數據轉vcf文件 瀏覽:585
編程題如何左右翻轉 瀏覽:920
wp10微信安裝不了 瀏覽:793

友情鏈接