Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用vba从ftp获取文件_Vba_Ms Access_Ftp_Wininet - Fatal编程技术网

无法使用vba从ftp获取文件

无法使用vba从ftp获取文件,vba,ms-access,ftp,wininet,Vba,Ms Access,Ftp,Wininet,我想从ftp下载一个图像,以便以后在access报告中使用,问题是ftpgetFile返回0,而没有下载文件夹中的图像 Public Function RecuperarFirmaMuestreadores(userID As Long) Dim firma As String Dim id As String id = CStr(userID) & ".jpg" sign = ftpfirma("XXX.XX.XXX.XXX", "User", "password", "/docume

我想从ftp下载一个图像,以便以后在access报告中使用,问题是ftpgetFile返回0,而没有下载文件夹中的图像

Public Function RecuperarFirmaMuestreadores(userID As Long)
Dim firma As String
Dim id As String
id = CStr(userID) & ".jpg"
sign = ftpfirma("XXX.XX.XXX.XXX", "User", "password", "/document/", id)
End Function



Function ftpfirma(ByVal HostName As String, ByVal Username As String, ByVal Password As String, ByVal sDir As String, id As String) As String



Dim sOrgPAth As String
Dim pData As WIN32_FIND_DATA
Dim hFind As Long, lRet As Long
Dim hConnection, hOpen, hFile  As Long
Dim sFiles() As String
Dim firma As Long

sPath = String(MAX_PATH, 0)


hOpen = InternetOpen("FTPGET", 1, vbNullString, vbNullString, 1)
hConn = InternetConnect(hOpen, HostName, INTERNET_DEFAULT_FTP_PORT, Username, Password, 1, 0, 2)

' Change Directory
Call FtpSetCurrentDirectory(hConn, sDir)

' get list of directory
Call FtpGetCurrentDirectory(hConn, sPath, Len(sPath))

Call FTPGetFile(hConn, id, "C:\Documents and Settings\Adrian\Mis documentos\Descargas", True, 0, 0 Or GENERIC_READ, 0)

' Close Internet Connection
Call InternetCloseHandle(hOpen)
Call InternetCloseHandle(hConn)


End Function
在ftp中,图像存在,它位于/documents中,名称类似123.jpg,我正在下载到我的下载文件夹中,我没有遇到任何错误

先谢谢你

编辑

我尝试了您所说的,但不起作用,getLastError返回0

Call FTPGetFile(hConn, id, "C:\Documents and Settings\Adrian\Mis documentos\Descargas\" & id, True, 0, INTERNET_FLAG_PASSIVE, 0)
e = getLastError()
马丁给出的解决方案

确保标志值不是像这种情况下的0,并且是INTERNET\u标志\u被动的

 hConn = InternetConnect(hOpen, HostName, INTERNET_DEFAULT_FTP_PORT, Username, Password, 1, INTERNET_FLAG_PASSIVE, 2)

非常感谢大家的回答。

我们成功地使用了此变体:

Private Const FTP\u TRANSFER\u TYPE\u长度为0时未知
私有Const INTERNET_FLAG_重载长度=&H8000000
如果FtpGetFileA(hConn、strRemoteFile、strLocalFile、1、0、FTP\传输\类型\未知或INTERNET\标志\重新加载,0),则
调试。打印“完成”
其他的
调试。打印“失败”
如果结束

的第三个参数是文件的路径,而不是目录

所以应该是这样的:

调用FTPGetFile(hConn,id,“C:\Documents and Settings\Adrian\Mis documentos\Descargas\”&id,…)

另外,一般情况下,您应该与
InternetConnect
一起使用


如果没有该标志,
InternetConnect
默认为活动模式,当涉及防火墙或NAT时,该模式通常不可用。

调用
FtpGetFile
GetLastError
返回什么?您错过了反斜杠:
\Descargas\“&id,…
。看看这篇文章,为什么你认为
互联网标志重新加载
会有什么不同?它在这里工作,与提问者使用的不同,而且很容易测试。我的两个建议中哪一个有用?都是,但这个问题的原因是因为互联网标志是被动的