一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Blog 圖片

 冰紅荼 2006-02-25
在頁面中使用圖片在應(yīng)用中是不可缺少的。很多時(shí)候我們都是把文件直接放在本地的文件系統(tǒng)上,這樣就可以直接在頁面中顯示圖片信息?,F(xiàn)在我介紹的是如何在將保存在數(shù)據(jù)庫中的圖像信息檢索出來并顯示在頁面中。所用的是oralce數(shù)據(jù)庫的blob存放圖片信息。
要顯示圖片首先在數(shù)據(jù)庫中必須要有圖片存放。第一步我們應(yīng)該建立一張表。表結(jié)構(gòu)如下:TEST_BLOB(id varchar2(20), blobcol BLOB)
第二步我們就必須將數(shù)據(jù)倒入到數(shù)據(jù)庫中
編譯運(yùn)行下面的代碼:
import java.io.*;
import java.sql.*;
import oracle.jdbc.OracleResultSet;
import oracle.sql.*;

public class TestOracle
{
String username,password;
Connection conn = null;
Statement stmt = null;

{
username="***";
password="***";
try
{
   Class.forName("oracle.jdbc.driver.OracleDriver");
   conn=DriverManager.getConnection("jdbc:oracle:thin:@10.150.6.160:1521:dbwind72",username,password);
   stmt=conn.createStatement();
}
catch(Exception ex)
{
System.out.println(ex);
}
}
public void blobInsert(String infile) throws Exception
{

boolean defaultCommit = conn.getAutoCommit();
conn.setAutoCommit(false);

try
{
System.out.println("try start");
stmt.executeUpdate("INSERT INTO test_blob VALUES(‘111‘,EMPTY_BLOB())");
System.out.println("stmt.executeUpdate");
//conn.commit();
ResultSet rs = stmt.executeQuery("SELECT BLOBCOL FROM TEST_BLOB WHERE ID=‘111‘ FOR UPDATE");
System.out.println("stmt.executeQuery");
while (rs.next())
{
oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("BLOBCOL");
System.out.println("rs.getBlob");
BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream());
System.out.println("out stream create");
BufferedInputStream  in = new BufferedInputStream(new FileInputStream(new File(infile)));
System.out.println("Create new input file");
int c;
while ((c=in.read())!=-1)
{
out.write(c);
}
in.close();
out.close();
}


conn.commit();
}
catch (Exception ex)
{
System.out.println("blobInsert‘s exception");
conn.rollback();
throw ex;
}

conn.setAutoCommit(defaultCommit);
}

public static void main(String[] args)
{
TestOracle test = new TestOracle();
try
{
test.blobInsert("r:\\onjava_logo.jpg");
}
catch(Exception ex)
{
System.out.println("main‘s test.blobInsert() Exception"+ex);
}

}
}

這樣就把你的R盤下面的onjava_logo.jpg保存到了數(shù)據(jù)庫中。注意:BLOB型的數(shù)據(jù)必須先插入一個(gè)空值然后UPDATE,不能直接往里面插值。

好了,準(zhǔn)備工作基本完成,現(xiàn)在開始我們的主題。我在這里直接用了一個(gè)jsp文件傳送從數(shù)據(jù)庫中檢索出來的圖片信息。jsp文件代碼如下:
//myimage.jsp
<%@ page contentType="image/jpeg" %>

<%@ page import="java.awt.image.*,java.sql.*,com.sun.image.codec.jpeg.*,java.util.*,javax.imageio.*,java.io.*"
%>

<%

// Create image
String username,password,url;
Connection conn = null;
Statement stmt = null;
BufferedInputStream inputimage=null;
username="***";
password="***";
url ="jdbc:oracle:thin:@10.150.6.160:1521:dbwind72";
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=DriverManager.getConnection(url,username,password);
stmt=conn.createStatement();

boolean defaultCommit = conn.getAutoCommit();
conn.setAutoCommit(false);

try {

ResultSet rs = stmt.executeQuery("SELECT * FROM TEST_BLOB WHERE ID=‘111‘");

while (rs.next()) {
oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("BLOBCOL");
inputimage = new BufferedInputStream(blob.getBinaryStream());
}
} catch (Exception ex) {
System.out.println("blobRead()‘s exception"+ex);
conn.rollback();
throw ex;
}
conn.setAutoCommit(defaultCommit);


// Send back image
BufferedImage image = null;
try{
image = ImageIO.read(inputimage);
}catch(IOException e){
System.out.println(e);
}
ServletOutputStream sos = response.getOutputStream();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(sos);
encoder.encode(image);
inputimage.close();
/*/**/
%>
這里我用到了com.sun.image.codec.jpeg包中的JPEGImageEncoder來構(gòu)造圖片。首先從數(shù)據(jù)庫中檢索到這個(gè)BLOB保存的數(shù)據(jù)。inputimage = new BufferedInputStream(blob.getBinaryStream());然后包裝成一個(gè)BufferedInputStream。之后用這個(gè)BufferedInputStream構(gòu)造一個(gè)BufferedImage:image = ImageIO.read(inputimage);剩下的事情就好辦了,encode就行了。
簡要的說完了,希望能對(duì)大家有點(diǎn)兒幫助。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    国产精品欧美激情在线| 青青操视频在线播放免费| 欧美一区二区三区视频区| 高清国产日韩欧美熟女| 黄色片国产一区二区三区| 亚洲一级在线免费观看| 国产一级片内射视频免费播放| 亚洲精品国产福利在线| 欧美人禽色视频免费看| 欧美成人一区二区三区在线 | 亚洲少妇一区二区三区懂色| 伊人欧美一区二区三区| 在线观看视频日韩成人| 欧美人妻少妇精品久久性色| 国产精品久久女同磨豆腐| 内射精子视频欧美一区二区| 日韩国产亚洲一区二区三区| 日本淫片一区二区三区| 国产超薄黑色肉色丝袜| 老司机精品视频免费入口| 欧美一级特黄大片做受大屁股| 午夜精品麻豆视频91| 国产在线成人免费高清观看av| 欧美乱码精品一区二区三| 欧美大胆美女a级视频| 日韩在线视频精品视频| 欧美日韩一级aa大片| 国产免费一区二区三区av大片| 日本午夜精品视频在线观看| 亚洲最新的黄色录像在线| 免费精品国产日韩热久久| 最近中文字幕高清中文字幕无| 亚洲国产婷婷六月丁香| 国产精品第一香蕉视频| 亚洲深夜精品福利一区| 欧美成人精品国产成人综合| 国产精品久久精品毛片| 国产一区二区三区不卡| 老司机精品国产在线视频| 欧美性高清一区二区三区视频 | 日本一二三区不卡免费|