| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 448 人关注过本帖
标题:vfp调用wininet能否实现ftp断点续传?
只看楼主 加入收藏
chaodai2
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2023-5-11
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
vfp调用wininet能否实现ftp断点续传?
项目要求实现ftp服务器上传下载大文件断点续传功能,参考了许多资料都不得要领,
试用了myfll也不能实现断点续传,按照网上的wininet api 资料也实现上传下载但也无法断点续传每次都是从头开始。
FTP Server是Serv-U_15.2的应该是支持的,用FlashFXP测试也确实可以的。
查阅了FTP协议规范说是要先执行"REST 开始位置值" 再执行"STOR/RETR 文件名" 上传或下载文件,但无论如何尝试都不能成功。
参考资料:https://
其中ftpCommand方法是可以发送ftp命令“REST 1000”到ftpserver,服务器也确实返回了执行成功信息,但ftpCommand本身返回了执行错误(GetLastError 错误码 12003),之后的 RETR 也不再响应了。
ftp服务器日志如下:
[5] Thu 17Aug23 22:21:59 - (000136) Connected to x.x.x.x (Local address 192.168.0.240)
[6] Thu 17Aug23 22:21:59 - (000136) 220 Test FTP Server
[2] Thu 17Aug23 22:21:59 - (000136) USER test
[6] Thu 17Aug23 22:21:59 - (000136) 331 User name okay, need password.
[2] Thu 17Aug23 22:21:59 - (000136) PASS xxxxx
[5] Thu 17Aug23 22:21:59 - (000136) User test logged in
[6] Thu 17Aug23 22:21:59 - (000136) 230 User logged in, proceed.
[2] Thu 17Aug23 22:21:59 - (000136) TYPE A
[6] Thu 17Aug23 22:21:59 - (000136) 200 Type set to A.
[2] Thu 17Aug23 22:21:59 - (000136) PASV
[6] Thu 17Aug23 22:21:59 - (000136) 227 Entering Passive Mode (192,168,0,240,196,47)
[2] Thu 17Aug23 22:21:59 - (000136) REST 1000
[6] Thu 17Aug23 22:21:59 - (000136) 350 Restarting at 1000. Send STORE or RETRIEVE.
[2] Thu 17Aug23 22:21:59 - (000136) QUIT
[6] Thu 17Aug23 22:21:59 - (000136) 221 Goodbye!
[5] Thu 17Aug23 22:21:59 - (000136) Closing connection for user test (00:00:00 connected)

问题困扰很久,恳求有实现过该功能的坛友指点迷津
搜索更多相关主题的帖子: 断点 执行 ftp USER Test 
2023-08-18 17:29
iswith
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:471
专家分:621
注 册:2013-5-14
收藏
得分:20 
REST 后接size ,你是怎么理解的?
REST 也不对!你先理解这两个command
这个功能好像Netsuite.dll有下载断点续传DownloadBrokenFile
 /// <param name="strRemoteFileName">要下载的文件名</param>
        /// <param name="strFolder">本地目录(不得以\结束)</param>
        /// <param name="strLocalFileName">保存在本地时的文件名</param>
        /// <param name="size">已下载文件流长度</param>
DownloadBrokenFile( string strRemoteFileName
                  , string strFolder
                  , string strLocalFileName
                  , ref int    size
                  , ref string ErrMsg )

[此贴子已经被作者于2023-8-18 21:01编辑过]

2023-08-18 20:57
chaodai2
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2023-5-11
收藏
得分:0 
根据ftp协议定义断点续传分2步
1、REST 1000 &&是先指定传输位置
2、RETR abc.txt &&下载abc.txt文件,从1000字节处开始下载剩余的

我现在就是卡在第一步就不成功。

调用wininet.dll的ftpcommand函数定义如下
DECLARE INTEGER FtpCommand IN wininet;
    INTEGER   hConnect,;
    INTEGER   fExpectResponse,;
    INTEGER   dwFlags,;
    STRING    lpszCommand,;
    STRING  @ dwContext,;
    INTEGER @ phFtpCommand
Parameters:
hConnect [in] HINTERNET handle returned from a call to InternetConnect
fExpectResponse [in] BOOLvalue that indicates whether or not the application expects a response from the FTP server
dwFlags [in] Unsigned long integer value that contains the flags that control this function
lpszCommand [in] Pointer to a string value that contains the command to send to the FTP server
dwContext [in] Pointer to an unsigned long integer value that contains an application-defined value
phFtpCommand [out] Pointer to an HINTERNET handle that will be created if a valid data socket is opened
Return value:
Returns TRUE if successful, or FALSE otherwise

资料来源:https://  
2023-08-18 22:13
iswith
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:471
专家分:621
注 册:2013-5-14
收藏
得分:0 
m.lnSize = Fsize("C:\Netsuite\NetsuiteExamples\download\WingFtpServer.exe")
单线程。。。。
?oFtp.DownloadBrokenFile("WingFtpServer.exe","C:\Netsuite\NetsuiteExamples\download","WingFtpServer.exe",m.lnsize,@ErrMsg )
2023-08-19 08:30
chaodai2
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2023-5-11
收藏
得分:0 
Netsuite.dll使用要先注册,容易因windows更新补丁而失效,希望可以直接使用windows API免注册也方便做进度条。
2023-08-20 09:47
iswith
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:471
专家分:621
注 册:2013-5-14
收藏
得分:0 
钻牛角尖了
2023-08-20 10:56
快速回复:vfp调用wininet能否实现ftp断点续传?
数据加载中...
 
   



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

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