标题:求从FTP下载文件的代码?
只看楼主
su0527
Rank: 2
等 级:论坛游民
帖 子:452
专家分:79
注 册:2015-1-10
结帖率:96.03%
已结贴  问题点数:40 回复次数:14 
求从FTP下载文件的代码?
提供现成的 主机地址:"121.42.122.244"
用户名: "qxu1649560463"
密码: "su6683111"
ftp的\myfolder文件夹下有两个文件,分别为test(文本文件)和update.exe(可执行文件),要求将这两个文件下载到本地 d:\myfolder 文件夹中。

用于vfp写的软件升级,希望代码能在win7和win10下稳定运行,急需?
多次发类似贴,未果,希望版主,大侠们给点希望。
搜索更多相关主题的帖子: FTP 文件 代码 文件夹 升级 
2017-10-19 14:04
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:40 
用URLDownloadToFile试了一下
WIN10可以,没WIN7,XP不行。

DECLARE LONG URLDownloadToFileA IN Urlmon LONG, STRING@, STRING@, LONG, LONG
DECLARE LONG DeleteUrlCacheEntry IN Wininet STRING@
IF !DIRECTORY("D:\myfolder")
    MD D:\myfolder
ENDIF
? DownloadFile("ftp://qxu1649560463:su6683111@121.42.122.244\myfolder\test", "D:\myfolder\test")
? DownloadFile("ftp://qxu1649560463:su6683111@121.42.122.244\myfolder\update.exe", "D:\myfolder\update.exe")
CLEAR DLLS

FUNCTION DownloadFile(cURL, cLocalFileName)
    IF URLDownloadToFileA(0, @cURL, @cLocalFileName, 0, 0) == 0
        DeleteUrlCacheEntry(@cURL)
        RETURN .T.
    ENDIF
    RETURN .F.   
ENDFUNC
2017-10-19 16:17
su0527
Rank: 2
等 级:论坛游民
帖 子:452
专家分:79
注 册:2015-1-10
得分:0 
首先,十分感谢,我这边在win10测试下载成功了。另请教,如何在update.exe没下载前测出其版本号,以方便和本地版本号对比,来决定是否下载update.exe?
2017-10-19 16:51
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用su0527在2017-10-19 16:51:58的发言:

首先,十分感谢,我这边在win10测试下载成功了。另请教,如何在update.exe没下载前测出其版本号,以方便和本地版本号对比,来决定是否下载update.exe?

版本号只是一个标志,自己可以确定这个标志用什么形式、存放在哪里,也可以文件形式保存在远程和本地。
既然是在远程发布更新文件,就要连接获取文件相关的信息数据,即是就要下载,只是先要下载什么。

2017-10-19 17:39
su0527
Rank: 2
等 级:论坛游民
帖 子:452
专家分:79
注 册:2015-1-10
得分:0 
回复 4楼 吹水佬
能用agetfileversion()获取远程版本号吗?
另外,前面的代码中哪个参数是,存在即覆盖参数。
2017-10-19 17:49
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用su0527在2017-10-19 17:49:40的发言:

能用agetfileversion()获取远程版本号吗?
另外,前面的代码中哪个参数是,存在即覆盖参数。

agetfileversion只对有版本信息的文件,应该不能直接获取远程文件的版本信息。
如果有服务器端的,可在服务器端设一个监听,接到客户端有版本号请求时就通知客户,客户端收到回复确定是有更新时再作下一步。
如果没有服务器端,简单点就是同时发布一个更新信息文件,如newver.txt,客户端先下载这个文件,确定是有更新时再作下一步。
2017-10-19 20:38
schtg
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1355
专家分:2534
注 册:2012-2-29
得分:0 
学习啦,谢谢吹版!
2017-10-20 06:35
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:108
帖 子:2175
专家分:3785
注 册:2007-4-27
得分:0 
win7 vfp8.0 测试也成功

只求每天有一丁点儿的进步就可以了
2017-10-20 07:03
su0527
Rank: 2
等 级:论坛游民
帖 子:452
专家分:79
注 册:2015-1-10
得分:0 
版主就是高,向版主表示敬意!
2017-10-20 07:59
厨师王德榜
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:183
帖 子:942
专家分:4724
注 册:2013-2-16
得分:0 
1、以往这种需求,如果是我来搭建服务器的话,我会搭建SQL服务,用SQL能轻易实现你要的检测远程版本号、远程下载等要求,不过你用FTP这种方式还没尝试过。
2、用FTP其实也行,我用木瓜库下载能够成功,不过你以前多次尝试失败,只好放弃。好在前面吹版用URL方式也能成功,这给你提供了另一种可能。
3、至于检测远程文件的版本号,这个可以用变通的方式来解决,你不是在上面放了一个TEST吗,这个文本文件完全可以存放版本号。
思路为客户端先下载远程的TEST到本地,再用FILETOSTR("C:\TEST") 把文件内容读入内存,如果这个文本文件是用于记录版本的话,这样就可以得到远程服务器版本号。
再根据远端的版本号与本地对比,决定要不要下载新版本。
2017-10-20 13:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-481548-1-1.html




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

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