我利用VB做的FTP下载模块,前几天能正常下载根目录下任意文件夹中的文件,但上传时,只能传到根目录,不只为何?(以前正常上传,不受限,代码没有改)
今天突然发现下载只能下载FTP服务器设置的根目录下的文件,其他文件夹中的也不能下载了?
下边是我的程序代码,请高手指点一二:
函数声明:
Public 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 LongPublic 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 LongPublic 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 Function FtbDownLoad_To_Local(ByVal soucePath As String, ByVal destinationPath As String _
, ByVal sFileName As String) As Boolean
'其中 sourcePath 为服务器的FTP目录下的 相对路径,如果就在FTP的目录下,则传入 为空字符串即可
' destinationPath 为本机的路径
' sFileName 为要下载的文件名称
Dim lnginet
Dim lnginetconn
Dim blnRCOn Error GoTo err_L
FtbDownLoad_To_Local = False
'INTERNET_OPEN_TYPE_PRECONFIG
lnginet = InternetOpen(vbNullString, INTERNET_OPEN_TYPE_PRECONFIG, _
vbNullString, vbNullString, 0&)
If lnginet Then
lnginetconn = InternetConnect(lnginet, eWeb_address, 0, _
eUser_name, ePassword, 1, 0, 0)
If lnginetconn Then
blnRC = FtpGetFile(lnginetconn, soucePath + sFileName, destinationPath + sFileName, 0, 0, 1, 0)
If blnRC Then
'下载成功
FtbDownLoad_To_Local = False
Else
'下载失败
FtbDownLoad_To_Local = True
End If
InternetCloseHandle lnginetconn
InternetCloseHandle lnginet
Else
FtbDownLoad_To_Local = True
MsgBox "FTP 服务器连接失败,请与系统管理员联系!", vbCritical, "文件下载"
End If
Else
FtbDownLoad_To_Local = True
MsgBox "FTP 服务器设置错误,请与系统管理员联系!", vbCritical, "文件下载"
End If
Exit Function
err_L:
FtbDownLoad_To_Local = True
End Function
今天突然发现下载只能下载FTP服务器设置的根目录下的文件,其他文件夹中的也不能下载了?
下边是我的程序代码,请高手指点一二:
函数声明:
Public 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 LongPublic 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 LongPublic 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 Function FtbDownLoad_To_Local(ByVal soucePath As String, ByVal destinationPath As String _
, ByVal sFileName As String) As Boolean
'其中 sourcePath 为服务器的FTP目录下的 相对路径,如果就在FTP的目录下,则传入 为空字符串即可
' destinationPath 为本机的路径
' sFileName 为要下载的文件名称
Dim lnginet
Dim lnginetconn
Dim blnRCOn Error GoTo err_L
FtbDownLoad_To_Local = False
'INTERNET_OPEN_TYPE_PRECONFIG
lnginet = InternetOpen(vbNullString, INTERNET_OPEN_TYPE_PRECONFIG, _
vbNullString, vbNullString, 0&)
If lnginet Then
lnginetconn = InternetConnect(lnginet, eWeb_address, 0, _
eUser_name, ePassword, 1, 0, 0)
If lnginetconn Then
blnRC = FtpGetFile(lnginetconn, soucePath + sFileName, destinationPath + sFileName, 0, 0, 1, 0)
If blnRC Then
'下载成功
FtbDownLoad_To_Local = False
Else
'下载失败
FtbDownLoad_To_Local = True
End If
InternetCloseHandle lnginetconn
InternetCloseHandle lnginet
Else
FtbDownLoad_To_Local = True
MsgBox "FTP 服务器连接失败,请与系统管理员联系!", vbCritical, "文件下载"
End If
Else
FtbDownLoad_To_Local = True
MsgBox "FTP 服务器设置错误,请与系统管理员联系!", vbCritical, "文件下载"
End If
Exit Function
err_L:
FtbDownLoad_To_Local = True
End Function
解决方案 »
- 请问combobox如何用代码连到数据库的一张表?
- 一个有点变态的问题!把Picture虚拟化成按钮!涉及大事件捕获的问题!大家进来!偶只有79分了!散50!赏个光吧!
- 在ActiveX控件中加入IObjectSafety接口, 在网页中正常运行,但在VB中单步调试时出错?
- vb串口通信采集数据在坐标系内描点
- 菜鸟求助有关VB串口通信的界面显示问题。我需要将单片机采集到的0--5V电压传送到PC机上,通过界面显示出来,为什么0V和5V时能正常显示,而在0-5V间就不能
- 怎么动态增加控件数组,并且这些控件都可以相应事件?
- 端口操纵问题?
- 高分求赏这样的模糊查询->
- 谁知道,怎样获得软件(aaa.exe /s)/s这样的参数?
- commondialog的cancel问题
- 如何用给QQ发送框发送粘贴动作
- 怎么才能“一边输入编码,程序会一边搜索,把最接近的记录显示出来”VB6?
2、是否ftp服务器上的权限被限制了。
3、如果ftp服务器是运行在unix、Linux上的,路径应该用"/",而非"\",并且路径名、文件名的大小写都要与服务器上的完全一致。
4、以上问题需要联系ftp服务器的网管人员核对一下,或者,你用通用的ftp软件自己测试一下。
但现在有个新问题
下载完毕,不是通过 InternetCloseHandle lnginetconn
InternetCloseHandle lnginet
函数已经关闭连接了吗。但是,有个程序调用后,发现还没有真正释放。要等一会才能释放,不知道怎么回事?因此而影响其他程序的运行(得等一会才能执行其后的代码)
====
什么格式问题会导致这样?不是通过 InternetCloseHandle lnginetconn , InternetCloseHandle lnginet
函数已经关闭连接了吗。但是,有个程序调用后,发现还没有真正释放。
=============
如果在关闭句柄前最后一个执行ftp指令是失败的,那么在关闭句柄是会发生延时。你的情况可能与此有关。
在FTP根目录下,传入子文件夹 我写成了\aa\,应该前面没有\我执行ftp下载命令成功了啊,不应该发生关闭延时的问题吧