If LOF(FileNum) > 100000 Then ReDim Chunk(100000) For I = 1 To Int(LOF(FileNum) / 100000) Get FileNum, , Chunk() OrsPp.AddNew OrsPp!FileID = I + 1 OrsPp!FileNo = AFNo OrsPp!XM_CODEID = XM_CODEID OrsPp!Filename = AFName OrsPp!FileExpName = AFEName OrsPp!FileBlockSize = 100000 OrsPp!FileDate = Left(Date, 10) OrsPp!FileMemo.AppendChunk Chunk() OrsPp.Update Next I End If
OrsPp.Close
If I = 0 Then I = 1 MsgBox AFPName & " 文件安装完成,文件大小为 " & LOF(FileNum) & " ,共 " & I & " 个数据包", , "友情提示"
Close FileNum End If End Sub ----------------------------------------------------------------- Public Sub LoadBinFile(AFNo As String) '根据文件号,保存文件到当前路径下 TempFiles \Dim FileNum As Integer '自由文件号 Dim Chunk() As Byte '二进制数组 Dim I As Integer '文件块ID Dim fsDim OrsPp As New ADODB.Recordset Dim NewFileName As StringIf AFNo = "" Then Exit SubSet fs = CreateObject("Scripting.FileSystemObject")If fs.FolderExists(App.Path & "\TempFiles") = False Then fs.CreateFolder (App.Path & "\TempFiles") OrsPp.Open "select * from BinFilePack where FileNo=" & AFNo & " And XM_CodeID='" & XM_CODEID & "' Order By FileID", Con1, 3, 1NewFileName = App.Path & "\TempFiles\" & OrsPp.Fields("FileNo") & OrsPp.Fields("FileName")If Not fs.FileExists(NewFileName) Then '如果文件不存在那么,保存文件到本地
FileNum = FreeFile '得到自由文件号
Open NewFileName For Binary Access Write As FileNum
Do Until OrsPp.EOF ReDim Chunk(OrsPp.Fields("FileBlockSize")) Chunk() = OrsPp.Fields("FileMemo") If LOF(FileNum) = 0 Then Put FileNum, , Chunk() Else Put FileNum, LOF(FileNum) + 1, Chunk() End If OrsPp.MoveNext Loop
Close FileNum End IfOrsPp.CloseSet fs = Nothing End Sub -------------------------------------------------------- Public Sub ShowOleObjFile(AFNo As String) '根据文件号显示Ole对象文件 Dim iTask As Long, ret As Long, pHandle As LongOrsT0.Open "select * from BinFilePack where FileNo=" & AFNo & " And XM_CodeID='" & XM_CODEID & "' Order By FileID", Con1, 3, 1 Select Case UCase(OrsT0.Fields("FileExpName")) Case "JPG", "BMP", "XLS", "VSD", "PPT", "MP3", "GIF" iTask = Shell("Explorer """ & App.Path & "\TempFiles\" & OrsT0.Fields("FileNo") & OrsT0.Fields("FileName") & """ ", vbNormalFocus) Case "TXT", "INI" iTask = Shell("Notepad """ & App.Path & "\TempFiles\" & OrsT0.Fields("FileNo") & OrsT0.Fields("FileName") & """ ", vbNormalFocus) Case "DOC" iTask = Shell("WinWord """ & App.Path & "\TempFiles\" & OrsT0.Fields("FileNo") & OrsT0.Fields("FileName") & """ ", vbNormalFocus) Case "RAR", "ZIP" iTask = Shell("WINRAR """ & App.Path & "\TempFiles\" & OrsT0.Fields("FileNo") & OrsT0.Fields("FileName") & """ ", vbNormalFocus) End Select OrsT0.CloseEnd Sub
如果里面保存的是图片,是不是还要显示出来呢?
参考一下这个例子:
http://download.csdn.net/source/1467817
下面是我程序中用到的代码,不过我保存的是Sql数据库,希望对你有用
-----------------------------------------------------
表结构
二进制文件包 BinFilePack sysid 系统ID INT IDENTITY 4 NO
二进制文件包 BinFilePack XM_CODEID 项目编号 VARCHAR 32 YES
二进制文件包 BinFilePack FileNo 文件号 VARCHAR 32 NO
二进制文件包 BinFilePack FileName 文件名称 VARCHAR 50 NO
二进制文件包 BinFilePack FileExpName 扩展名 VARCHAR 10 NO
二进制文件包 BinFilePack FileMemo 块内容 IMAGE 2147483647 YES
二进制文件包 BinFilePack FileBlockSize 块大小 INT 4 YES
二进制文件包 BinFilePack FileDate 上传日期 DATETIME 16 NO
二进制文件包 BinFilePack FileID 文件块顺序 INT 4 NO
---------------------------------------------------
Public Sub SaveBinFile(AFNo As String, ACD As CommonDialog)
'AFNo 文件号,ACD 文件对话框实例
'AFName 文件名, AFEName 扩展名, AFPName 全路径文件名称
'将选定的《文件》分解为100K以内的文件块,写入BinFilePack表Dim AFName, AFEName, AFPName As StringDim FileNum As Integer '自由文件号
Dim Chunk() As Byte '二进制数组
Dim I As Integer '文件块IDDim OrsPp As New ADODB.RecordsetAFName = ACD.FileTitle
AFEName = UCase(Right(AFName, 3))
AFPName = ACD.FilenameIf AFPName <> "" Then '删除原旧版本文件
'Con1.Execute "delete from BinFilePack where FileNo='" & AFNo & "'"
'追加新版本文件
OrsPp.Open "select * from BinFilePack Where FileNo='" & AFNo & "' And XM_CodeID='" & XM_CODEID & "'", Con1, adOpenDynamic, adLockOptimistic
FileNum = FreeFile '得到自由文件号
Open AFPName For Binary Access Read As FileNum
ReDim Chunk(LOF(FileNum) Mod 100000)
Get FileNum, , Chunk()
OrsPp.AddNew
OrsPp!FileID = 1
OrsPp!FileNo = AFNo
OrsPp!Filename = AFName
OrsPp!FileExpName = AFEName
OrsPp!XM_CODEID = XM_CODEID
OrsPp!FileBlockSize = LOF(FileNum) Mod 100000
OrsPp!FileDate = Left(Date, 10)
OrsPp!FileMemo.AppendChunk Chunk()
OrsPp.Update
If LOF(FileNum) > 100000 Then
ReDim Chunk(100000)
For I = 1 To Int(LOF(FileNum) / 100000)
Get FileNum, , Chunk()
OrsPp.AddNew
OrsPp!FileID = I + 1
OrsPp!FileNo = AFNo
OrsPp!XM_CODEID = XM_CODEID
OrsPp!Filename = AFName
OrsPp!FileExpName = AFEName
OrsPp!FileBlockSize = 100000
OrsPp!FileDate = Left(Date, 10)
OrsPp!FileMemo.AppendChunk Chunk()
OrsPp.Update
Next I
End If
OrsPp.Close
If I = 0 Then I = 1
MsgBox AFPName & " 文件安装完成,文件大小为 " & LOF(FileNum) & " ,共 " & I & " 个数据包", , "友情提示"
Close FileNum
End If
End Sub
-----------------------------------------------------------------
Public Sub LoadBinFile(AFNo As String)
'根据文件号,保存文件到当前路径下 TempFiles \Dim FileNum As Integer '自由文件号
Dim Chunk() As Byte '二进制数组
Dim I As Integer '文件块ID
Dim fsDim OrsPp As New ADODB.Recordset
Dim NewFileName As StringIf AFNo = "" Then Exit SubSet fs = CreateObject("Scripting.FileSystemObject")If fs.FolderExists(App.Path & "\TempFiles") = False Then fs.CreateFolder (App.Path & "\TempFiles")
OrsPp.Open "select * from BinFilePack where FileNo=" & AFNo & " And XM_CodeID='" & XM_CODEID & "' Order By FileID", Con1, 3, 1NewFileName = App.Path & "\TempFiles\" & OrsPp.Fields("FileNo") & OrsPp.Fields("FileName")If Not fs.FileExists(NewFileName) Then '如果文件不存在那么,保存文件到本地
FileNum = FreeFile '得到自由文件号
Open NewFileName For Binary Access Write As FileNum
Do Until OrsPp.EOF
ReDim Chunk(OrsPp.Fields("FileBlockSize"))
Chunk() = OrsPp.Fields("FileMemo")
If LOF(FileNum) = 0 Then
Put FileNum, , Chunk()
Else
Put FileNum, LOF(FileNum) + 1, Chunk()
End If
OrsPp.MoveNext
Loop
Close FileNum
End IfOrsPp.CloseSet fs = Nothing
End Sub
--------------------------------------------------------
Public Sub ShowOleObjFile(AFNo As String)
'根据文件号显示Ole对象文件
Dim iTask As Long, ret As Long, pHandle As LongOrsT0.Open "select * from BinFilePack where FileNo=" & AFNo & " And XM_CodeID='" & XM_CODEID & "' Order By FileID", Con1, 3, 1
Select Case UCase(OrsT0.Fields("FileExpName"))
Case "JPG", "BMP", "XLS", "VSD", "PPT", "MP3", "GIF"
iTask = Shell("Explorer """ & App.Path & "\TempFiles\" & OrsT0.Fields("FileNo") & OrsT0.Fields("FileName") & """ ", vbNormalFocus)
Case "TXT", "INI"
iTask = Shell("Notepad """ & App.Path & "\TempFiles\" & OrsT0.Fields("FileNo") & OrsT0.Fields("FileName") & """ ", vbNormalFocus)
Case "DOC"
iTask = Shell("WinWord """ & App.Path & "\TempFiles\" & OrsT0.Fields("FileNo") & OrsT0.Fields("FileName") & """ ", vbNormalFocus)
Case "RAR", "ZIP"
iTask = Shell("WINRAR """ & App.Path & "\TempFiles\" & OrsT0.Fields("FileNo") & OrsT0.Fields("FileName") & """ ", vbNormalFocus)
End Select
OrsT0.CloseEnd Sub