下载的文件与FTP的原文件不一致,win7正常,win10不正常

hbqc_zh 2021-01-14 09:35:31
'FTP下载文件
Public Function DownLoadFile(IP As String, FileName As String, LocalFileName As String, UserName As String, PassWord As String, ByVal FtpSubdirectory As String) As Boolean
On Error GoTo f_Error
Dim Ret As Boolean
Dim FTP_FileName As String

If Len(FtpSubdirectory) > 0 Then
FTP_FileName = "\" & Trim(FtpSubdirectory) & "\" & FileName
Else
FTP_FileName = FileName
End If

hOpen = TestServer
If hOpen <> 0 Then
hConnection = InterConnection(IP, UserName, PassWord)
If hConnection <> 0 Then
' ret = FtpGetFile(hConnection, FileName, LocalFileName, 0, 0, 1, 0)
' DownLoadFile = ret

FtpGetFile hConnection, FTP_FileName, LocalFileName, 0, 0, 2, 0

' 第一个参数hFtpSession 是InternetConnect 调用返回的句柄值。
' lpszRemoteFile和lpszNewFile 分别是FTP服务器上的文件名和将在本地机上创建的文件名?
'  fFailIfExists 标志是0(替换本地文件)或1 (如果本地文件已经存在则取消)。
' dwFlagsAndAttributes 用来指定本地文件的文件属性?
'  dwFlags 参数指定为1是用ASCII 传输文件(A类传输方法),指定为2是用二进制传输文件(1类传输方法)。
'  最后,当使用回叫信号时,lContext 用来识别应用程序前后关系。
'  如果函数调用成功,blnRC为 True, 反之为False。

DownLoadFile = (GetLastError <> ERROR_INTERNET_EXTENDED_ERROR)
Else
DownLoadFile = False
End If
Else
DownLoadFile = False
End If
InternetCloseHandle hConnection
InternetCloseHandle hOpen
Exit Function
f_Error:
MsgBox "错误码:" & err.Number & Chr(13) & err.Source & ":" & err.Description, vbExclamation, "提示"
End Function
...全文
773 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hbqc_zh 2021-01-15
  • 打赏
  • 举报
回复
'FTP下载文件 Private Const FTP_TRANSFER_TYPE_UNKNOWN As Long = 0 Private Const INTERNET_FLAG_RELOAD As Long = &H80000000 Public Function DownLoadFile(IP As String, FileName As String, LocalFileName As String, UserName As String, PassWord As String, ByVal FtpSubdirectory As String) As Boolean On Error GoTo f_Error Dim Ret As Boolean Dim FTP_FileName As String Dim Ftp_Path As String Dim bl_delete As Boolean If Len(FtpSubdirectory) > 0 Then FTP_FileName = "\" & Trim(FtpSubdirectory) & "\" & FileName Else FTP_FileName = FileName End If Ftp_Path = "\" & Trim(FtpSubdirectory) hOpen = TestServer If hOpen <> 0 Then hConnection = InterConnection(IP, UserName, PassWord) If hConnection <> 0 Then '/************强制注意*********************** 'FTP_TRANSFER_TYPE_UNKNOWN(默认为FTP_TRANSFER_TYPE_BINARY) 'INTERNET_FLAG_RELOAD:强制从源服务器(而不是从缓存)下载请求的文件,对象或目录列表。 '参考:https://docs.microsoft.com/en-us/previous-versions/aa917857(v=msdn.10)?redirectedfrom=MSDN FtpGetFile hConnection, FTP_FileName, LocalFileName, 0, 0, FTP_TRANSFER_TYPE_UNKNOWN Or INTERNET_FLAG_RELOAD, 0 ' 第一个参数hFtpSession 是InternetConnect 调用返回的句柄值。 ' lpszRemoteFile和lpszNewFile 分别是FTP服务器上的文件名和将在本地机上创建的文件名? ' fFailIfExists 标志是0(替换本地文件)或1 (如果本地文件已经存在则取消)。 ' dwFlagsAndAttributes 用来指定本地文件的文件属性? ' dwFlags 参数指定为1是用ASCII 传输文件(A类传输方法),指定为2是用二进制传输文件(1类传输方法)。 ' 最后,当使用回叫信号时,lContext 用来识别应用程序前后关系。 ' 如果函数调用成功,blnRC为 True, 反之为False。 DownLoadFile = (GetLastError <> ERROR_INTERNET_EXTENDED_ERROR) Else DownLoadFile = False End If Else DownLoadFile = False End If InternetCloseHandle hConnection InternetCloseHandle hOpen Exit Function f_Error: MsgBox "错误码:" & err.Number & Chr(13) & err.Source & ":" & err.Description, vbExclamation, "提示" End Function
hbqc_zh 2021-01-15
  • 打赏
  • 举报
回复
清缓存,还在调试中
vansoft 2021-01-15
  • 打赏
  • 举报
回复
网上有个FTP的类,可以搜索一下,学习一下。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧