|
|
|
| CODE:
< !-- -- -- -- -- -- -- -- -- -- -- -- -- --servlet-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --> package Photo; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; import java.lang.*; import java.sql.*;
/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2002</p> * <p>Company: </p> * @author unascribed * @version 1.0 */
public class ShowImage extends HttpServlet { private static final String CONTENT_TYPE = "image/*"; /** * 定義數(shù)據(jù)庫連接字符串,jdbc.odbc橋 */ private String driver_class = "oracle.jdbc.driver.OracleDriver"; private String connect_string = "jdbc:oracle:thin:xxw/xxw@192.168.1.50:1521:ORCL"; Connection conn = null; ResultSet rs = null; Statement stmt = null; /******************************************** * 定義應(yīng)用變量 ******************************************/ private String SQLString = ""; //定義查詢語句 public String M_EorrMenage = ""; //定義錯誤信息變量 private InputStream in = null; //定義輸入流 private int len = 10 * 1024 * 1024; //定義字符數(shù)組長度
//Initialize global variables public void init() throws ServletException { /** * 連接數(shù)據(jù)庫 */ try { Class.forName(driver_class); } catch (java.lang.ClassNotFoundException e) { //異常 System.err.println("databean():" + e.getMessage()); } } //Process the HTTP Get request public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE); PrintWriter out = response.getWriter(); //在數(shù)據(jù)庫中的照片的ID int PHOTOID = 0; /********************************************* * 接受上文傳遞的圖片ID號 * 上文傳輸文件名稱為photoid *********************************************/ try {
PHOTOID = Integer.parseInt(request.getParameter("photoid")); SQLString = "select * from xxw_photo where p_id=" + PHOTOID;
} catch (Exception e) { e.printStackTrace(); response.setContentType("text/html; charset=gb2312"); M_EorrMenage = "請輸入圖片ID號"; M_EorrMenage = new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK"); out.println("<%@ page contentType=‘text/html; charset=gb2312‘ %>"); out.println("<html>"); out.println("<head><title>id</title></head>"); out.println("<body>"); out.println("<p>" + M_EorrMenage + "</p>"); out.println("</body></html>");
} /***************************************************** * 執(zhí)行查詢語句 *****************************************************/ try { conn = DriverManager.getConnection(connect_string); stmt = conn.createStatement(); rs = stmt.executeQuery(SQLString); } //try catch (SQLException ex) { System.err.println("aq.executeUpdate:" + ex.getMessage()); M_EorrMenage = "對不起,數(shù)據(jù)庫無法完成此操作!"; M_EorrMenage = new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK"); response.setContentType("text/html; charset=gb2312"); out.println("<html>"); out.println("<head><title>no_database</title></head>"); out.println("<body>"); out.println("<p>" + M_EorrMenage + "</p>"); out.println("</body></html>");
} /********************************************* * 將圖片流讀入字符數(shù)組中,并顯示到客戶端 ********************************************/ try { if (rs.next()) { in = rs.getBinaryStream("photo"); response.reset(); //返回在流中被標記過的位置 response.setContentType("image/jpg"); //或gif等 // int len=in.available();//得到文件大小 OutputStream toClient = response.getOutputStream(); byte[] P_Buf = new byte[len]; int i; while ((i = in.read(P_Buf)) != -1) { toClient.write(P_Buf, 0, i); } in.close(); toClient.flush(); //強制清出緩沖區(qū) toClient.close(); } else { M_EorrMenage = "無此圖片!"; M_EorrMenage = new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK"); response.setContentType("text/html; charset=gb2312"); out.println("<html>"); out.println( "<head><title>this photo isn‘t have</title></head>"); out.println("<body>"); out.println("<p>" + M_EorrMenage + "</p>"); out.println("</body></html>"); } rs.close(); } catch (Exception e) { e.printStackTrace(); M_EorrMenage = "無法讀取圖片!"; M_EorrMenage = new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK"); response.setContentType("text/html; charset=gb2312"); out.println("<%@ page contentType=‘text/html; charset=gb2312‘ %>"); out.println("<html>"); out.println("<head><title>no photo</title></head>"); out.println("<body>"); out.println("<p>" + M_EorrMenage + "</p>"); out.println("</body></html>"); } }
//Clean up resources public void destroy() { try { conn.close(); } catch (SQLException e) { System.err.println("aq.executeUpdate:" + e.getMessage()); M_EorrMenage = "對不起,數(shù)據(jù)庫無法完成此操作!"; } } }
<!---------------------------顯示----------------------------------------------> <html> <head> <title>Untitled Document</title> </head> <body bgcolor="#FFFFFF" text="#000000"> <table> <% int i=1; while(i<3){ %> <tr> <td colspan="3"> <img border="1" src="http://192.168.1.50:8100/ShowImage?photoid=<%=i%>"></td> </tr> <% i++; } %> </table> </body> </html>
注:此程序?qū)τ趶臄?shù)據(jù)庫讀取圖片后寫入文件請參考代碼者留意 | | 整理發(fā)布:獨孤求勝 umbrella | | |
文章回復(fù):Re:從數(shù)據(jù)庫中讀出圖片并顯示的示例代碼作者:Cable Fan 發(fā)表于:2005-10-11 20:33 通過Email跟作者聯(lián)系謝謝作者,作者只是想講解一個技術(shù),并不是論方法好壞. Re:從數(shù)據(jù)庫中讀出圖片并顯示的示例代碼作者:青菜蟲 發(fā)表于:2005-05-24 08:40 通過Email跟作者聯(lián)系我想如果是存入地址的話,是不是不是在本地上傳的圖片會訪問不到啊。還有,我怎么沒有看明白怎么樣從網(wǎng)頁中顯示出來的啊。 Re:從數(shù)據(jù)庫中讀出圖片并顯示的示例代碼作者:tony 發(fā)表于:2005-02-16 16:00 通過Email跟作者聯(lián)系我和Demon 有同樣的疑問----為什么把圖片直接放到數(shù)據(jù)庫中?為什么不存入地址,然后從數(shù)據(jù)庫讀出圖片地址就好啊! Re:從數(shù)據(jù)庫中讀出圖片并顯示的示例代碼作者:David 發(fā)表于:2004-12-16 19:59 通過Email跟作者聯(lián)系發(fā)自內(nèi)說一句 THANK YOU VERY MUCH!! 感謝您的幫助??! Re:從數(shù)據(jù)庫中讀出圖片并顯示的示例代碼作者:Demon 發(fā)表于:2004-08-14 16:14 通過Email跟作者聯(lián)系為什么把圖片直接放到數(shù)據(jù)庫中?為什么不存入地址,然后從數(shù)據(jù)庫讀出圖片地址就好??! |
|
|
|
| CODE:
< !-- -- -- -- -- -- -- -- -- -- -- -- -- --servlet-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --> package Photo; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; import java.lang.*; import java.sql.*;
/** * Title: * Description: * Copyright: Copyright (c) 2002 * Company: * @author unascribed * @version 1.0 */
public class ShowImage extends HttpServlet { private static final String CONTENT_TYPE = "image/*"; /** * 定義數(shù)據(jù)庫連接字符串,jdbc.odbc橋 */ private String driver_class = "oracle.jdbc.driver.OracleDriver"; private String connect_string = "jdbc:oracle:thin:xxw/xxw@192.168.1.50:1521:ORCL"; Connection conn = null; ResultSet rs = null; Statement stmt = null; /******************************************** * 定義應(yīng)用變量 ******************************************/ private String SQLString = ""; //定義查詢語句 public String M_EorrMenage = ""; //定義錯誤信息變量 private InputStream in = null; //定義輸入流 private int len = 10 * 1024 * 1024; //定義字符數(shù)組長度
//Initialize global variables public void init() throws ServletException { /** * 連接數(shù)據(jù)庫 */ try { Class.forName(driver_class); } catch (java.lang.ClassNotFoundException e) { //異常 System.err.println("databean():" + e.getMessage()); } } //Process the HTTP Get request public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE); PrintWriter out = response.getWriter(); //在數(shù)據(jù)庫中的照片的ID int PHOTOID = 0; /********************************************* * 接受上文傳遞的圖片ID號 * 上文傳輸文件名稱為photoid *********************************************/ try {
PHOTOID = Integer.parseInt(request.getParameter("photoid")); SQLString = "select * from xxw_photo where p_id=" + PHOTOID;
} catch (Exception e) { e.printStackTrace(); response.setContentType("text/html; charset=gb2312"); M_EorrMenage = "請輸入圖片ID號"; M_EorrMenage = new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK"); out.println("<%@ page contentType=‘text/html; charset=gb2312‘ %>"); out.println(""); out.println(""); out.println(""); out.println("" + M_EorrMenage + " "); out.println("");
} /***************************************************** * 執(zhí)行查詢語句 *****************************************************/ try { conn = DriverManager.getConnection(connect_string); stmt = conn.createStatement(); rs = stmt.executeQuery(SQLString); } //try catch (SQLException ex) { System.err.println("aq.executeUpdate:" + ex.getMessage()); M_EorrMenage = "對不起,數(shù)據(jù)庫無法完成此操作!"; M_EorrMenage = new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK"); response.setContentType("text/html; charset=gb2312"); out.println(""); out.println(""); out.println(""); out.println("" + M_EorrMenage + " "); out.println("");
} /********************************************* * 將圖片流讀入字符數(shù)組中,并顯示到客戶端 ********************************************/ try { if (rs.next()) { in = rs.getBinaryStream("photo"); response.reset(); //返回在流中被標記過的位置 response.setContentType("image/jpg"); //或gif等 // int len=in.available();//得到文件大小 OutputStream toClient = response.getOutputStream(); byte[] P_Buf = new byte[len]; int i; while ((i = in.read(P_Buf)) != -1) { toClient.write(P_Buf, 0, i); } in.close(); toClient.flush(); //強制清出緩沖區(qū) toClient.close(); } else { M_EorrMenage = "無此圖片!"; M_EorrMenage = new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK"); response.setContentType("text/html; charset=gb2312"); out.println(""); out.println( ""); out.println(""); out.println("" + M_EorrMenage + " "); out.println(""); } rs.close(); } catch (Exception e) { e.printStackTrace(); M_EorrMenage = "無法讀取圖片!"; M_EorrMenage = new String(M_EorrMenage.getBytes("ISO8859_1"), "GBK"); response.setContentType("text/html; charset=gb2312"); out.println("<%@ page contentType=‘text/html; charset=gb2312‘ %>"); out.println(""); out.println(""); out.println(""); out.println("" + M_EorrMenage + " "); out.println(""); } }
//Clean up resources public void destroy() { try { conn.close(); } catch (SQLException e) { System.err.println("aq.executeUpdate:" + e.getMessage()); M_EorrMenage = "對不起,數(shù)據(jù)庫無法完成此操作!"; } } }
<% int i=1; while(i<3){ %>
| ![]()
| <% i++; } %>
注:此程序?qū)τ趶臄?shù)據(jù)庫讀取圖片后寫入文件請參考代碼者留意 |
|
|
showimage?photoid="">
<%
i++;
}
%>
注:此程序?qū)τ趶臄?shù)據(jù)庫讀取圖片后寫入文件請參考代碼者留意