[em04][em06][em04]作者: tmtony 时间: 2002-5-7 19:39
我现在的程序都用这个函数(忘了从哪里弄过来了),挺好,应该还有其它办法,我记得ASP中存图片的方法有些不同。
Private Function AppendBlobFromFile(blobColumn As ADODB.Field, ByVal FILENAME) As Boolean
Dim FileNumber As Integer '文件号
Dim DataLen As Long '文件长度
Dim Chunks As Long '数据块数
Dim ChunkAry() As Byte '数据块数组
Dim ChunkSize As Long '数据块大小
Dim Fragment As Long '零碎数据大小
Dim lngI As Long '计数器
FileNumber = FreeFile '产生随机的文件号
Open FILENAME For Binary Access Read As FileNumber '打开图像文件
DataLen = LOF(FileNumber) '获得文件长度
If IsNull(blobColumn) Then Exit Function
If DataLen = 0 Then '文件长度为0
Close FileNumber
AppendBlobFromFile = True
Exit Function
End If
Chunks = DataLen \ ChunkSize '数据块的个数
Fragment = DataLen Mod ChunkSize
If Fragment > 0 Then '先写零碎数据
ReDim ChunkAry(Fragment - 1)
Get FileNumber, , ChunkAry() '读出文件
blobColumn.AppendChunk ChunkAry '调用AppendChunk函数写数据
End If
ReDim ChunkAry(ChunkSize - 1) '为数据块开辟空间
For lngI = 1 To Chunks '循环读出所有数据块
Get FileNumber, , ChunkAry() '读出一块数据
blobColumn.AppendChunk ChunkAry '在数据库中增加数据块
Next lngI
Close FileNumber '关闭文件
AppendBlobFromFile = True
Exit Function
ErrorHandle:
AppendBlobFromFile = False
MsgBox Err.Description, vbCritical, "写图像数据出错!"
End Function