程序如下:
Private Sub StartDownLoadBmp()
' 獲取客戶端BMP存貯位置,創建檔案夾
Dim BmpPath, CreateBmpPath
BmpPath = funReadlist(App.Path & "\info.xml", "bmppath")
If BmpPath(0) <> "錯誤" Then
CreateBmpPath = CreatePath(App.Path & "\FileInfo\FileTree.xml", (BmpPath(0)))
If CreateBmpPath = True Then
Lblmsg.Caption = "創建圖檔檔案夾成功"
Else
Lblmsg.Caption = "創建圖檔檔案夾失敗"
Exit Sub
End If
End If
'創建檔案夾結束
'比對FileTree中的圖檔串列與本地圖檔txt檔案
Dim GetFileTree, MyFileTxt
Dim GetBmpTime, GetDBTime
Dim ConnectFTP
Dim a, b As Integer
a = 0
b = 0
GetFileTree = funReadlist(App.Path & "\FileInfo\FileTree.xml", "FileNameList")
If GetFileTree(0) <> "錯誤" Then
ConnectFTP = 連接服務器(InetDF.RemoteHost, InetDF.RemotePort, InetDF.UserName, InetDF.Password)
Do While a < UBound(GetFileTree)
MyFileTxt = GetFileToArr(App.Path & "\FileInfo\" & GetFileTree(a) & ".txt")
Dim LineLeft, LineRight, FileName As String
Do While b < UBound(MyFileTxt)
GetBmpTime = ""
LineLeft = Split(MyFileTxt(b), "=")(0)
LineRight = Split(MyFileTxt(b), "=")(1)
FileName = Split(LineRight, "\")(UBound(Split(LineRight, "\")))
GetBmpTime = GetLastTime(BmpPath(0) & "\" & GetFileTree(a) & LineLeft & "\" & FileName)
If GetBmpTime = "" Then
Debug.Print Trim("ftp://" & InetDF.RemoteHost & LineRight & "," & BmpPath(0) & "\" & GetFileTree(a) & LineLeft & "\" & FileName)
ConnectFTP = 下載檔案(Trim("ftp://" & InetDF.RemoteHost & LineRight), Trim(BmpPath(0) & "\" & GetFileTree(a) & LineLeft & "\" & FileName))
DoEvents
End If
b = b + 1
Loop
a = a + 1
Loop
End If
'比對結束
End Sub
模塊如下:
Option Explicit
Private Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Private Const INTERNET_OPEN_TYPE_DIRECT = 1
Private Const INTERNET_OPEN_TYPE_PROXY = 3
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession As Long, ByVal sServerName As String, ByVal nServerPort As Integer, ByVal sUsername As String, ByVal sPassword As String, ByVal lService As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Private Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" (ByVal hFtpSession As Long, ByVal lpszRemoteFile As String, ByVal lpszNewFile As String, ByVal fFailIfExists As Boolean, ByVal dwFlagsAndAttributes As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean
Private Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" (ByVal hFtpSession As Long, ByVal lpszLocalFile As String, ByVal lpszRemoteFile As String, ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean
Private Declare Function FtpDeleteFile Lib "wininet.dll" Alias "FtpDeleteFileA" (ByVal hFtpSession As Long, ByVal lpszFileName As String) As Boolean
Private Declare Function FtpRenameFile Lib "wininet.dll" Alias "FtpRenameFileA" (ByVal hFtpSession As Long, ByVal lpszExsiting As String, ByVal lpszNew As String) As Boolean
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
Private Declare Function FtpCreateDirectory Lib "wininet.dll" Alias "FtpCreateDirectoryA" (ByVal hFtpSession&, ByVal lpszDirectory$) As Boolean
Dim 連接狀態 As Boolean
Dim 連接句柄 As Long
Public Function 連接服務器(IP As String, 埠 As Integer, 帳號 As String, 密碼 As String) As Boolean
Dim 初始化 As Long
Dim INTERNET_OPEN_TYPE_PRECONFIG As Long
初始化 = InternetOpen(vbNullString, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0&)
連接句柄 = InternetConnect(初始化, IP, 埠, 帳號, 密碼, 1, 0, 0)
If 連接句柄 > 0 Then
連接狀態 = True
Else
連接狀態 = False
End If
連接服務器 = 連接狀態
End Function
Public Function 上傳檔案(本地路徑 As String, 遠程路徑 As String) As Boolean
If 連接狀態 = True Then
上傳檔案 = FtpPutFile(連接句柄, 本地路徑, 遠程路徑, 1, 0)
Else
MsgBox "請先確認連接" & ":上傳檔案"
End If
End Function
Public Function 下載檔案(遠程路徑 As String, 本地路徑 As String) As Boolean
If 連接狀態 = True Then
下載檔案 = FtpGetFile(連接句柄, 遠程路徑, 本地路徑, False, &H80000000, &H0, 0)
Else
MsgBox "請先確認連接" & ":下載檔案"
End If
End Function
Public Function 洗掉檔案(ByVal 檔案路徑) As Boolean
If 連接狀態 = True Then
洗掉檔案 = FtpDeleteFile(連接句柄, 檔案路徑)
Else
MsgBox "請先確認連接" & ":洗掉檔案"
End If
End Function
Public Function 創建目錄(ByVal 路徑 As String) As String
If 連接狀態 = True Then
創建目錄 = FtpCreateDirectory(連接句柄, 路徑)
Else
MsgBox "請先確認連接" & ":創建目錄"
End If
End Function
Public Function 檔案改名(ByVal 原檔案名 As String, ByVal 新檔案名 As String)
If 連接狀態 = True Then
ReturnVal& = FtpRenameFile(連接句柄, 原檔案名, 新檔案名)
Else
MsgBox "請先確認連接" & ":檔案改名"
End If
End Function
各位VB大神,求解,我的所有FTP上的BMP檔案的路徑都存在一個陣列里,BMP檔案的大小大約為4MB,怎樣把所有的BMP檔案都下載到本地,目前用的是WinInet下載,但是下載下來檔案大小全部為0,并且后面一個檔案會覆寫前面的檔案
uj5u.com熱心網友回復:
用漢字當識別符號名也是醉了!
uj5u.com熱心網友回復:
檢查Filename的值uj5u.com熱心網友回復:
漢字的部分是網上找的代碼uj5u.com熱心網友回復:
FileName的值沒問題,所有的檔案名都能在檔案夾里顯示,只是每張圖片的大小為0,并且下載到下一張后,前面那張就沒了,檔案夾里始終只有一張大小為0的圖片,在檔案夾里重繪,都能看到這唯一的一個BMP檔案的檔案名在變化轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/69950.html
標籤:網絡編程
