| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5061 人关注过本帖, 1 人收藏
标题:分析从ftp下载文件失败原因?已经是第二次发贴了。
只看楼主 加入收藏
su0527
Rank: 2
等 级:论坛游民
帖 子:452
专家分:79
注 册:2015-1-10
结帖率:96.03%
收藏(1)
已结贴  问题点数:20 回复次数:13 
分析从ftp下载文件失败原因?已经是第二次发贴了。
Clea
* lAccessType - some values
#Define INTERNET_INVALID_PORT_NUMBER  0
#Define INTERNET_OPEN_TYPE_DIRECT     1
#Define INTERNET_OPEN_TYPE_PROXY      3
#Define INTERNET_DEFAULT_FTP_PORT     21

* lFlags: only a few
#Define INTERNET_FLAG_ASYNC             268435456     && &H10000000
#Define INTERNET_FLAG_FROM_CACHE        16777216    && &H1000000
#Define INTERNET_FLAG_OFFLINE           16777216
#Define INTERNET_FLAG_CACHE_IF_NET_FAIL 65536        && &H10000

* registry access settings
#Define INTERNET_OPEN_TYPE_PRECONFIG  0
#Define FTP_TRANSFER_TYPE_ASCII       1
#Define FTP_TRANSFER_TYPE_BINARY      2

* type of service to access
#Define INTERNET_SERVICE_FTP     1
#Define INTERNET_SERVICE_GOPHER  2
#Define INTERNET_SERVICE_HTTP    3

* file attributes
#Define FILE_ATTRIBUTE_NORMAL    128    && 0x00000080

    Declare INTEGER InternetOpen IN wininet;
        STRING sAgent, INTEGER lAccessType, STRING sProxyName,;
        STRING sProxyBypass, STRING  lFlags

    Declare INTEGER InternetCloseHandle IN wininet INTEGER hInet

    Declare INTEGER InternetConnect IN wininet;
        INTEGER hInternetSession, STRING  sServerName,;
        INTEGER nServerPort, STRING  sUsername,;
        STRING  sPassword, INTEGER lService,;
        INTEGER lFlags, INTEGER lContext

    Declare INTEGER FtpGetFile IN wininet;
        INTEGER hFtpSession, STRING  lpszRemoteFile,;
        STRING  lpszNewFile, INTEGER fFailIfExists,;
        INTEGER dwFlagsAndAttributes,;
        INTEGER dwFlags, INTEGER dwContext
* you are free to choose any name, say "John Dow"
* server-side variable $AGENT is the target
sAgent = "hongyu"

sProxyName = Chr(0)        && I have no proxy
sProxyBypass = Chr(0)    && so there is nothing to bypass
lFlags = 0                && no flags used

* initialize access to Inet functions
hOpen = InternetOpen (sAgent, INTERNET_OPEN_TYPE_DIRECT,;
    sProxyName, sProxyBypass, lFlags)

If hOpen = 0
    ? "找不到库 WinInet.Dll 的入口"
    Return
Else
    ? "Wininet 句柄: " + LTRIM(STR(hOpen))
Endif

* connection parameters - you better put your data
strHost = "121.42.122.244"
strUser = "qxu1649560463"
strPwd  = "su6683111"

* connecting to the FTP
hFtpSession = InternetConnect (hOpen, strHost,;
    INTERNET_INVALID_PORT_NUMBER,;
    strUser, strPwd,;
    INTERNET_SERVICE_FTP, 0, 0)

If hFtpSession = 0
    * close access to Inet functions and exit
    = InternetCloseHandle (hOpen)
    ? "FTP " + strHost + " 无效"
    Return
Else
    ? "连接到 " + strHost + " as: [" + strUser + ", *****]"
    ? "FTP 连接句柄: " + LTRIM(STR(hFtpSession))
Endif


* downloading a file from the FTP
* no check whether the target file exists
lpszRemoteFile = "/myfolder/test.txt"        && if it still exists
lpszNewFile    = "d:\myfolder"    && check the destination folder
fFailIfExists  = 0        && do not stop if the target already exists
dwContext      = 0

lnResult = FtpGetFile (hFtpSession, lpszRemoteFile, lpszNewFile,;
    fFailIfExists, FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_ASCII,;
    dwContext)

If lnResult # 1
    ? "下载文件失败!"
Endif

* close handles
= InternetCloseHandle (hFtpSession)
= InternetCloseHandle (hOpen)
Return        && main



[此贴子已经被作者于2017-9-18 18:34编辑过]

搜索更多相关主题的帖子: ftp Define INTEGER STRING the 
2017-09-17 15:06
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
查看了一下路径:
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

改这句就正常了:
lpszRemoteFile = "myfolder/test"
2017-09-17 15:42
su0527
Rank: 2
等 级:论坛游民
帖 子:452
专家分:79
注 册:2015-1-10
收藏
得分:0 
回复 2楼 吹水佬
改为:lpszRemoteFile = "myfolder/text"
结果还是下载失败。
2017-09-18 06:34
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用su0527在2017-9-18 06:34:44的发言:

改为:lpszRemoteFile = "myfolder/text"
结果还是下载失败。

试用IE打开ftp://121.42.122.244/
如果能打开,登录后能打开那个下载的文件应该就无问题
2017-09-18 07:17
kim_wei
Rank: 1
等 级:新手上路
帖 子:40
专家分:7
注 册:2008-5-5
收藏
得分:0 
木瓜的MyFll.fll中有FtpDownFile()函数,非常好用!汉字路径和文件名都没问题,而且调用方便!

MyFll.rar (318.97 KB)


[此贴子已经被作者于2017-9-18 09:45编辑过]

2017-09-18 09:43
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用su0527在2017-9-18 06:34:44的发言:

改为:lpszRemoteFile = "myfolder/text"
结果还是下载失败。

是test,不是text
lpszRemoteFile = "myfolder/test"
2017-09-18 11:38
su0527
Rank: 2
等 级:论坛游民
帖 子:452
专家分:79
注 册:2015-1-10
收藏
得分:0 
回复 4楼 吹水佬
在IE中打开没有问题。

text改成test之后结果一样:下载文件失败!


[此贴子已经被作者于2017-9-18 18:37编辑过]

2017-09-18 18:35
su0527
Rank: 2
等 级:论坛游民
帖 子:452
专家分:79
注 册:2015-1-10
收藏
得分:0 
回复 5楼 kim_wei
试用过,一样没有成功。
2017-09-18 18:38
厨师王德榜
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:199
帖 子:991
专家分:4966
注 册:2013-2-16
收藏
得分:5 
我改了这两句后,可以下载成功:
lpszRemoteFile = "/myfolder/test"   
lpszNewFile    = "D:\test1"  && 要注意这个不是指定Folder而是指定本地文件名 

2017-09-19 14:33
su0527
Rank: 2
等 级:论坛游民
帖 子:452
专家分:79
注 册:2015-1-10
收藏
得分:0 
回复 9楼 厨师王德榜
按照您所说修改后,仍是:下载文件失败!真不知道是为什么?
2017-09-19 14:48
快速回复:分析从ftp下载文件失败原因?已经是第二次发贴了。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029288 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved