漫说以Stream对象的二进制存储较大文件
时 间:2013-12-29 23:29:48
作 者:殷小宝 ID:11152 城市:芜湖
摘 要:采用Stream的二进制方式存储图片等较大文件,所占空间小,而且是嵌入式的.在程序外看不到原文件的.
正 文:
接着就是如何在窗体中将所存的二进制文件还原展示出来,条件也是绑定Stream,模式(Mode)必须具有读写权限:adModeReadWrite 。Stream也是打开(Open),类型(Type)也是二进制(adTypeBinary),将将数据表中的二进制取出,首先也是采用打开记录集的方法,将记录集是二进制文件写进Stream,其方法是Write,再将数据流还原其原来的文件样式,地址随你定,采用的方法正好与LoadFromFile方法相反:SaveToFile,这样可以将窗体上的图片框的Picture属性赋给它,于是就显示出原来的文件,在窗体上展现出来。保存到电脑上的文件也只是暂时的,因为不是一个文件,文件名又是相同,下一个文件要取代它,于是毫不留情地杀死它(KILL),因为数据流只是被子读取一次,所以一次只能显示一个文件,不能批量显示(多张图片)。用这种方法在程序外面看不到图片,做到“来无影去无踪”。下面是以二进制存储图片并在窗体上显示出来的代码:
Dim FileName As String
'将图片以二进制保存到数据表中
Sub SaveImage()
Dim rs As New ADODB.Recordset
Dim Istm As ADODB.Stream
rs.Open "图库", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Set Istm = New ADODB.Stream
If Not IsNull(FileName) Then
With Istm
.Type = adTypeBinary
.Open
.LoadFromFile FileName
End With
End If
rs.AddNew
rs("图片") = Istm.Read
rs.Update
rs.Close
Istm.Close
Set rs = Nothing
Set Istm = Nothing
End Sub
'插入图片以获得图片名
Sub GetFileName()
Dim Result As Integer
With Application.FileDialog(1)
.Title = "选择照片"
.Filters.Clear
.Filters.Add "所有文件", "*.*"
.Filters.Add "JPEGs", "*.jpg"
.Filters.Add "位图文件", "*.bmp"
.FilterIndex = 2
.AllowMultiSelect = False
.InitialFileName = CurrentProject.Path
Result = .Show
FileName = Trim(.SelectedItems.Item(1))
Image1.Picture = FileName
End With
End Sub
'读取二进制文件,并显示到窗体上
Sub FindRecord()
Dim rs As New ADODB.Recordset
Dim Istm As ADODB.Stream
rs.Open "Select 图片 FROM 图库 Where id=" & [Forms]![图库]![id], CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Set Istm = New ADODB.Stream
With Istm
.Mode = adModeReadWrite
.Type = adTypeBinary
.Open
.Write rs("图片")
.SaveToFile "c:\image.jpg"
End With
Me.Image1.Picture = "c:\image.jpg"
rs.Close
Istm.Close
Kill "c:\image.jpg"
Set rs = Nothing
Set Istm = Nothing
End Sub
Access软件网QQ交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 统计当月之前(不含当月)的记录...(03.11)
- 【Access Inputbo...(03.03)
- 按回车键后光标移动到下一条记录...(02.12)
- 【Access Dsum示例】...(02.07)
- Access对子窗体的数据进行...(02.05)
- 【Access高效办公】上月累...(01.09)
- 【Access高效办公】上月累...(01.06)
- 【Access Inputbo...(12.23)
- 【Access Dsum示例】...(12.16)

学习心得
最新文章
- 仓库管理实战课程(12)-月度结存...(04.16)
- 仓库管理实战课程(11)-人性化操...(04.15)
- 32位的Access软件转化为64...(04.12)
- 【Access高效办公】如何让vb...(04.11)
- 仓库管理实战课程(10)-入库功能...(04.08)
- Access快速开发平台--Fun...(04.07)
- 仓库管理实战课程(9)-开发往来单...(04.02)
- 仓库管理实战课程(8)-商品信息功...(04.01)
- 仓库管理实战课程(7)-链接表(03.31)
- 仓库管理实战课程(6)-创建查询(03.29)