读取保存在数据库里的图片JSP页面显示无法显示图片

读取保存在数据库里的图片JSP页面显示无法显示图片,第1张

我把你的代码稍微改造了下,我这边是可以显示的。代码如下:

数据库 *** 作部分:

package comdatabase;

import javaioInputStream;

import javasql;

/

  @作者 王建明

  @创建日期 13-10-7

  @创建时间 下午12:32

  @版本号 V 10

 /

public class DataBaseUtil {

public static InputStream getImageStreamFromDataBase() {

Connection conn = null;

try {

ClassforName("commysqljdbcDriver");

conn =

DriverManagergetConnection("jdbc:mysql://localhost/quickstart", "root", "123456");

Statement stmt = conncreateStatement();

String sql = "select book_image from tbl_book where id=1 ";

ResultSet rs = stmtexecuteQuery(sql);

if (rsnext()) {

return rsgetBinaryStream("book_image");

}

} catch (Exception e) {

Systemoutprintln("出现异常: " + egetMessage());

} finally {

try {

if (conn != null)

connclose();

} catch (SQLException e) {

eprintStackTrace();

}

}

return null;

}

}

servlet部分:

package comservlet;

import comdatabaseDataBaseUtil;

import javaxservletServletException;

import javaxservlet>}

webxml中的servlet配置:

    <servlet>

        <servlet-name>ShowImage</servlet-name>

        <servlet-class>comservletShowImage</servlet-class>

    </servlet>

    <servlet-mapping>

        <servlet-name>ShowImage</servlet-name>

        <url-pattern>/showImage</url-pattern>

    </servlet-mapping>

页面中加载方式:

<img src="showImage" />

希望对你有帮助O(∩_∩)O~

给你个示例,下面是读取数据库中的二进制数据,并存放到指定的地方的,读取的,应该差不多

strSQL = "select From CodeFile where CodeID=" & ID

RsOpen strSQL, Conn, 1, 3

While Not RsEOF

FileName = Rs("FileName")Value

Str = Rs("FileContent")GetChunk(Rs("FileContent")ActualSize)

Call SaveFile(Str, AppPath & "\Tmp\" & FileName)

RsMoveNext

Wend

'下面是SaveFile的过程

Public Sub SaveFile(Str, fName)

Dim objstream As New ADODBStream

'--------------建立ADODBStream对象,必须要ADO 25以上版本---------

objstreamType = 1

'-------------以二进制模式打开-------------------------------------

objstreamOpen

'--------------------将字符串内容写入缓冲--------------------------

objstreamWrite Str

'--------------------将缓冲的内容写入文件--------------------------

objstreamSaveToFile fName, 1

objstreamClose

Set objstream = Nothing

'-----------------------关闭对象,释放资源-------------------------

End Sub

安卓中如何获取保存的uri 并保存到sqlite数据库

有如下两种方法,仅供参考

方法一:Java代码

public void saveIcon(Bitmap icon) {

if (icon == null) {

return;

}

// 最终图标要保存到浏览器的内部数据库中,系统程序均保存为SQLite格式,Browser也不例外,因为是二进制的所以使用字节数组存储数据库的

// BLOB类型

final ByteArrayOutputStream os = new ByteArrayOutputStream();

// 将Bitmap压缩成PNG编码,质量为100%存储

iconcompress(BitmapCompressFormatPNG, 100, os);

// 构造SQLite的Content对象,这里也可以使用

raw ContentValues values = new ContentValues();

// 写入数据库的

BrowserBookmarkColumnsTOUCH_ICON字段 valuesput(BrowserBookmarkColumnsTOUCH_ICON, ostoByteArray());

DBUtilupdate();

//调用更新或者插入到数据库的方法

}

}

方法二:如果数据表入口时一个content:URIJava代码

import androidproviderMediaStoreImagesMedia;

import androidcontentContentValues;

import javaioOutputStream;

// Save the name and description of an image in a ContentValues map

ContentValues values = new ContentValues(3);

valuesput(MediaDISPLAY_NAME, "road_trip_1");

valuesput(MediaDESCRIPTION, "Day 1, trip to Los Angeles");

valuesput(MediaMIME_TYPE, "image/jpeg");

// Add a new record without the bitmap, but with the values just set

// insert() returns the URI of the new record

Uri uri = getContentResolver()insert(MediaEXTERNAL_CONTENT_URI, values);

// Now get a handle to the file for that record, and save the data into it

// Here, sourceBitmap is a Bitmap object representing the file to save to the database

try {

OutputStream outStream = getContentResolver()openOutputStream(uri);

sourceBitmapcompress(BitmapCompressFormatJPEG, 50, outStream);

outStreamclose();

} catch (Exception e) {

Loge(TAG, "exception while writing image", e);

}

原文请看>

这里介绍两种种方法。

1,SqlDataReader的GetSqlBytes方法用于检索varbinary(max)列的内容。

reader = commandExecuteReader(CommandBehaviorSequentialAccess);

while (readerRead())

SqlBytes bytes = readerGetSqlBytes(0);

例1从NorthWind数据库的Employees表读取雇员图像并显示。SqlDataReader的GetSqlBytes方法返回一个SqlBytes对象,该对象公开Stream属性。使用该属性创建新的Bitmap对象,然后以Gif ImageFormat格式保存到Stream。

private void ReadPhoto(string lastName)     //读取雇员图像并显示

{

using (SqlConnection connection = new SqlConnection(ConnectionString))

{

Stream s = new MemoryStream();      //创建一个以内存为后备存储的流

SqlCommand command = connectionCreateCommand();

SqlDataReader reader = null;

try

{

commandCommandText = "SELECT LastName,Photo FROM dboEmployees " +

" WHERE LastName=@LastName";

commandCommandType = CommandTypeText;

//声明参数并赋值

SqlParameter parameter = new SqlParameter("@LastName", SqlDbTypeNVarChar, 20);

parameterValue = lastName;

commandParametersAdd(parameter);

connectionOpen();

//修改DataReader的默认行为,SequentialAccess按顺序接收数据并立即加载

//CloseConnection指明关闭DataReader时,对数据库的连接也关闭

reader = commandExecuteReader(

CommandBehaviorSequentialAccess|CommandBehaviorCloseConnection);

if (readerHasRows)

{

while (readerRead())

{

//SequentialAccess要求按顺序接收数据,先接受reader[0]

thislabel1Text = reader[0]ToString();

if (readerIsDBNull(1))          //若列值为空返回

return;

else

{

//使用readerGetSqlBytes获取图像数据

SqlBytes bytes = readerGetSqlBytes(1);

using (Bitmap productImage = new Bitmap(bytesStream))

{

//以gif格式保存在Stream流并显示

productImageSave(s, SystemDrawingImagingImageFormatGif);

thispictureBox1Image = SystemDrawingImageFromStream(s);

} } }

}

else

MessageBoxShow("No records returned");

}

catch (Exception ex)

{

MessageBoxShow(exMessage);

}

Finally

{

if (reader != null)

readerDispose();               //关闭DataReader,同时关闭对数据库连接

}

sClose();                         //关闭流

}

}

本程序将DataReader设置为SequentialAccess,要求顺序访问字段,所以先读取LastName小数据,再读取图像大数据。程序运行后从组合框选取雇员的LastName,将在图形框出现雇员的图像,

2,SqlDataReader的GetSqlBinary方法可用于检索varbinary(max)列的内容。

reader = commandExecuteReader(CommandBehaviorCloseConnection);

while (readerRead())

SqlBinary binaryStream = readerGetSqlBinary(0);

例2 AdventureWorks2008数据库中的ProductionProductPhoto表含有图形列LargePhoto,数据类型是varbinary(max),可空。用GetSqlBinary方法检索图形数据的代码如下:

private void ReadPhoto(int documentID)    //输入参数documentID是产品ID

{

using (SqlConnection connection = new SqlConnection(GetConnectionString()))

{

thislabel1Text = documentIDToString();

try

{

string queryString = "SELECT LargePhoto FROM ProductionProductPhoto " +

"WHERE ProductPhotoID=@ProductPhotoID";

SqlCommand command = new SqlCommand(queryString, connection);

SqlParameter paramID = new SqlParameter("@ProductPhotoID", SqlDbTypeInt);

paramIDValue = documentID;

commandParametersAdd(paramID);

connectionOpen();

//修改DataReader的默认行为

SqlDataReader reader = commandExecuteReader(

CommandBehaviorSequentialAccess|CommandBehaviorCloseConnection);

if (readerHasRows)

{

while (readerRead())

{

if (readerIsDBNull(0))

return;

else

{

Stream s = new MemoryStream();

SqlBinary binaryStream = readerGetSqlBinary(0);

//根据SqlBinary值初始化SqlBytes类的新实例

SqlBytes bytes = new SqlBytes(binaryStream);

using (Bitmap productImage = new Bitmap(bytesStream))

{

//用gif格式保存图形

productImageSave(s, SystemDrawingImagingImageFormatGif);

thispictureBox1Image = SystemDrawingImageFromStream(s);

}

sClose();

} }

}

else

MessageBoxShow("No records returned");

}

catch (Exception ex)

{

MessageBoxShow(exMessage);

} }

}

下图为documentID=100的自行车类型

以上示例取自C#编程指南但尧编著清华大学出版社2011年1月

以上就是关于读取保存在数据库里的图片JSP页面显示无法显示图片全部的内容,包括:读取保存在数据库里的图片JSP页面显示无法显示图片、关于VB 6 怎样读取Access数据库中的图片(ole类型数据)和调用chn帮助文件、android 如何获取保存的图片的地址 并存到数据库中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9272282.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存