您的位置:首页技术开发ASP技巧 → 如何从ACCESS数据库中读取图形续

如何从ACCESS数据库中读取图形续

时间:2004/11/7 4:11:00来源:本站整理作者:蓝点我要评论(0)

注意的是你也可以从一个文件中新建一个位图对象,但使用这样

的方式保存在数据库中的图形格式是浏览器不能够识别的。

当你往数据库中保存图象时,你应该知道你需要使用什么格式来保存

你可以把文件中的每一个字节保存下来,或则通过ACCESS/Foxpro的把图形保存

为一个OLE格式。

你使用什么格式保存图象决定了你在ASP中用什么格式来读出图形来。

具体来说,如果你在ACCESS/FoxPro中将图形保存为bmp,gif,jpeg(

这个必须要使用到ACCESS/FoxPro的OLE对象,即使用ACCESS的插入对象

对话框来完成),这是当你使用

image/bmp时浏览器是不能够解释的。



现在假设在数据库中保存的是你所想要的图形格式

(GIF, JPEG, BMP, TIFF, 等等等等)现在来看看要怎么把它们从

数据库中读出来。



在ACCESS中使用了两个关键的技术来保存图形

1。使用了bmp格式

2。78个字节的文件头



<%

response.Expires = 0

response.Buffer = True

response.Clear

response.contentType = "image/bmp"

%>

接着你要干的就是去掉那78个字节的OLE对象的文件头。

<%

Const OLEHEADERSIZE = 78

nFieldSize = rs("photo").ActualSize

oleHeader = rs("photo").GetChunk(OLEHEADERSIZE)

imageBytes = rs("photo").GetChunk(nFieldSize - OLEHEADERSIZE)

Response.BinaryWrite imageBytes

%>



现在举一个例子:

如果你要得到一个职工的信息,这段信息包括一个介绍和他的图象。

并且要同时显示文字和图形。

代码如下:(其中的theImg是一个代理页面)

theImg.asp

<%

response.Expires = 0

response.Buffer = True

response.Clear

response.contentType = Session("ImageType")

response.BinaryWrite Session("ImageBytes")

Session("ImageType") = ""

Session("ImageBytes") = ""

response.End

%>





Function SetImageForDisplay(field, contentType)

OLEHEADERSIZE = 78

contentType = LCase(contentType)

select case contentType

case "gif", "jpeg", "bmp"

contentType = "image/" & contentType

bytes = field.value

case "ole"

contentType = "image/bmp"

nFieldSize = field.ActualSize

oleHeader = field.GetChunk(OLEHEADERSIZE)

bytes = field.GetChunk(nFieldSize - OLEHEADERSIZE)

end select

Session("imageBytes") = bytes

Session("imageType") = contentType

End Function

'注意的是,程序中只使用了4中格式:gif, jpeg, bmp , ole .



<%

sql = "select * from Employees"

Set oRS = Server.CreateObject("ADODB.Recordset")

oRS.CursorLocation = 3

oRS.Open sql, "DSN=NW"

SetImageForDisplay oRS("photo"), "ole"

Set oRS.ActiveConnection = Nothing

%>



要显示图象的话,只需要在另外一个asp中,假设为getEmpInfo.asp中



但这还有一个问题,因为对每个职工的图形都使用了同一个"theImg.asp"

文件,应该再小小修改一下:

"



最后再说一点,如何显示多幅图象呢?

也就是说如果数据库中有多个字段都保存了图形,怎么办?

其实解决办法很简单,只要给SetImageForDisplay多加一个参数

就是用来保存图形的一个session变量。

例如:

SetImageForDisplay oRS1("photo"), "ole", "empPhoto"

SetImageForDisplay oRS2("logo"), "gif", "compLogo"



">

">



使用这个方法能够完成下面的功能:

1。能够从数据库中取出图形字段。(你唯一需要知道的是数据库中的图形是什么格式

bmp?gif?jpeg?ole?)

2.采用session变量 来保存图形的字节数和content type

asp需要这些信息来联结到中的属性

3。只要把theImg放到你想显示图形的地方,就能够显示图象了。








相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 VB.NET 2005编写定时关 Jquery get/post下乱码解决方法 前台gbk gb如何使用数据绑定控件显示数据ASP脚本循环语句ASP怎么提速

人气排行 轻松解决"Server Application Error"和iis"一起学习DataGridView调整列宽用ASP随机生成文件名的函数Jquery get/post下乱码解决方法 前台gbk gbODBC Drivers错误80004005的解决办法返回UPDATE SQL语句所影响的行数的方法用Javascript隐藏超级链接的真实地址两个不同数据库表的分页显示解决方案