漫说以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交流群 (群号:483923997) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 【Access窗体导出PDF】...(04.08)
- 【Access窗体导出PDF】...(04.07)
- Access两种方式实现即时更...(03.01)
- Access隐藏与显示lacc...(01.12)
- 【Access高效办公】将每个...(12.23)
- Access21点游戏源代码(12.13)
- 【Access窗体导出Exce...(11.15)
- 【Access开发】Acces...(11.14)
- 通过Access宏录入数据到选...(11.10)
学习心得
最新文章
- ACCESS精华集锦资料.CHM(04.25)
- Access VBA语句If Me...(04.24)
- 【Access修改记录示例】编辑选...(04.22)
- 【Access表名称命名建议】将A...(04.20)
- Access学习笔记--用Acce...(04.19)
- 【Access重复项查询示例】将A...(04.17)
- Access快速开发平台企业版--...(04.16)
- 【Access模块示例】通过模块代...(04.15)
- Access查询里面分组合计功能添...(04.13)
- 【Access删除查询】删除数字最...(04.12)