标题:关于FtpUploadFile的问题
只看楼主
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:166
专家分:15
注 册:2013-8-12
结帖率:87.5%
已结贴  问题点数:20 回复次数:67 
关于FtpUploadFile的问题
各位大侠:小弟最近用VFP9 + Win7环境做一个小软件,用于了木瓜的myfll(版本为1.187)。

我想用myfll中的 FtpUploadFile 函数上传文件到到FTP服务器,却无法成功。我的上网环境为联通无线上网。

肯请大家帮我测试一下,并分析一下我失败的原因,谢谢大家。

FTP用户名: pangchuan
FTP密码是:
电信上传IP:222.89.188.129 端口:21
联通/移动上传IP:182.236.160.129 端口:21

以下语句能成功,
clear
Set Library To myfll
hFtp=FtpConnect("182.236.160.129","pangchuan",",21)
If hFtp == ""
    MessageBox("无法连接ftp服务器")
    Return
EndIf
?"将当前路径更改为 web:"  ,  FtpSetCurrentDir(hFtp,"web")
?"创建一个文件夹:",FtpCreateDir(hFtp,"eepc")
可以成功在web文件下新建一个文件夹eepc

但我用
? FtpUploadFile("182.236.160.129" , "c:\test.ico" ,"web\test.ico" , "pangchuan",")
却总是返回假。

请大家帮我分析一下吧。

搜索更多相关主题的帖子: 联通无线 上传文件 用户名 服务器 电信 
2013-08-12 08:07
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:20 
先把当前目录转过去再上传

授人以渔,不授人以鱼。
2013-08-12 09:12
whinda
Rank: 6Rank: 6
等 级:贵宾
威 望:13
帖 子:253
专家分:418
注 册:2012-2-4
得分:0 
以下是引用eepcvfp在2013-8-12 08:07:21的发言:
但我用
? FtpUploadFile("182.236.160.129" , "c:\test.ico" ,"web\test.ico" , "pangchuan",")
却总是返回假。

请大家帮我分析一下吧。


想问下:FtpUploadFile的申明格式或详细参数。应是源文件到目标目录的关系,"c:\test.ico" ,"web\test.ico"却是一个文件复制到另一个文件,后面是不是该改成"web"就OK了呢?
FtpSetCurrentDir(hFtp,"web")中hFtp是句柄吗?什么的句柄?服务器方当前目录的句柄?如果是这样的话,是不是这样呢:
FtpUploadFile("182.236.160.129" , "c:\test.ico" ,hFtp , "pangchuan",")

[ 本帖最后由 whinda 于 2013-8-12 09:40 编辑 ]
2013-08-12 09:34
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:166
专家分:15
注 册:2013-8-12
得分:0 
谢谢两位热心大侠的帮助,木瓜老师的 myfll.fll中关于这个函数的帮助文档如下:

函数名:FtpUploadFile(cServer,cLocalFile,cRemoteFile [,cUserName [,cPassword]])
缩写:ftpu
向FTP服务器上传文件,注意:windows服务器可以不区分大小写,而且可以同时使用\或/做为路径,而unix系列服务器则是区分大小写,并且路径只能用/来标识

支持VFP回调SetVFPEvents()来获取进度。

返回值:
逻辑值,为真时,上传成功,否则失败
参数:
cServer:字符型,服务器地址,如127.0.0.1,如果非21端口,请用冒号隔开,如192.168.1.1:22
cLocalFile:字符型,本地文件,应包含全部路径。如d:\test.rar
cRemoteFile:字符型,远程文件,应包含相对于根的路径,如www\test.rar
[cUserName:字符型,访问FTP的用户名,如果使用匿名访问,可以省略此参数
[cPassword]:字符型,访问FTP的密码,如果使用匿名访问,可以省略此参数
示例代码
Set Library To myFll

*将d盘的test.rar上传到服务器的www文件夹下:

?FtpUploadFile("127.0.0.1","d:\test.rar","www\test.rar","admin","a123")

Set Library To

我照两位大侠的方法去尝试了一下,均失败了。


问问 TonyDeng 大侠:我看myfll.fll的帮助文档里,FtpUploadFile 函数的示例代码并未使用 hFtp=FtpConnect("182.236.160.129","pangchuan",",21) 创建的连接句柄 hFtp ,所以大胆猜测了一下:是不是 FtpUploadFile 函数本事可以单独运行,不须先用 FtpConnect 建立与FTP服务器的连接呢?
不知道我的想法对不对?

2013-08-12 14:47
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
不行,必须先连接通了服务器,除非myfll写的上传函数自己带有连接代码。他的那套库我没用过,我自己写的就没这种问题。

授人以渔,不授人以鱼。
2013-08-12 17:48
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:166
专家分:15
注 册:2013-8-12
得分:0 
我也尝试过先连通,请 TonyDeng 大侠指点。
2013-08-12 19:00
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
我那整套ftp的工具库,不好全给你吧,要看看删削了点什么才好。

授人以渔,不授人以鱼。
2013-08-12 22:07
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:166
专家分:15
注 册:2013-8-12
得分:0 
以下是引用TonyDeng在2013-8-12 22:07:21的发言:

我那整套ftp的工具库,不好全给你吧,要看看删削了点什么才好。
呵呵,理解理解!在各大论坛时常能看到您的身影,为新手答疑解惑,您的技术和热心让我折服,自然不敢有过份的奢求。

我的软件里用到了myfll中的很多功能,帮助文档中说 FtpUploadFile 函数支持回调,可以显示下载进度,所以想尝试用它。

小弟把昨晚的测试结果和一点想法向 TonyDeng 大侠汇报一下:

1、继续用myfll中的FTP函数进行测试,新建文件夹能够成功,上传和下传继续失败。推测是不是我的FTP服务器设置问题。(顺便说一下:上面提供的这个服务器地址是我为了测试在 易网 上 免费申请的。)

2、用一位大侠写 Foxer.dll 中的FTP涵数,成功实现了 新建文件夹,文件夹更名,上传、下载等功能,是不是可以排除FTP服务器的问题呢?但我也发现这些函数好像不太稳定,也没有提供支持回调的函数,无法显示上传、下载进度。

所有,我有了一点新的想法:我做的是一个类似学生信息管理系统的东西,需要上传或下载的主要是每个学生的登记照片,每张照片在 6-7K 之间(用foxer.dll上传大约在10秒左右),还有少量学校的照片,大小在 1M 左右(用foxer.dll上传大约在25秒左右)。

方案一:用FTP方式上传照片,“学生信息表”中的“照片”字段(nVarchar型)只存储照片在服务器上的路径,需要时根据路径采用FTP方式下载。

方案二A:将照片直接存入“学生信息表”中的“照片”字段(TEXT型),平时 Select 其它字段列表 …… ,在需要显示照片时再 Select 照片 …… 。
        (我以前用这种方式做过自动升级程序,将“升级文件”存入一个表中,客户机读取这个表中的文件实现升级,发现这种方式还是比较稳定的。)

方案二B:将照片存入一个专门的“照片库”中(该库只存储照片,平时很少操作它),“学生信息表”的“照片”字段(nVarchar型)只存储一个照片编号,需要显示照片时,同方案二A,根据照片编号从“照片库”中读取“照片记录”,再还原为照片。

根据我的需求,还有更好的方式吗?如果“学生信息表”中记录较多(3万条记录),如果采用方案二A,由于要经常操作“学生信息表”,会不会因为这个“照片”字段(TEXT型)的存在,插入或修改记录时影响索引的更新效率?

请大侠赐教!小弟在此谢过。

[ 本帖最后由 eepcvfp 于 2013-8-13 13:46 编辑 ]
2013-08-13 13:41
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
针对你只要上传和下载,我待会弄一个函数库给你吧。上传和下载,不是按字节计算的,木瓜纵然有进度条,也只能是伪进度条,除非他逐个字节上传和下载,不要那个东西为好。后面的问题,用方案二B较好,当然也有别的方案,不过都差不多。

授人以渔,不授人以鱼。
2013-08-13 13:55
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:166
专家分:15
注 册:2013-8-12
得分:0 
万幸万幸!!

再斗胆索要:新建/删除文件夹,更名、检查文件夹或文件是否存在、上传、下载、枚举目录的函数。

小弟是新手,这些东西我自己做火候差太远了,所以,请大侠赐教!
小弟当在软件的帮助文档里注明 FTP部分使用了大侠的函数库(如果大侠允许的话),呵呵。

小弟的邮箱是:eepc@

[ 本帖最后由 eepcvfp 于 2013-8-13 14:13 编辑 ]
2013-08-13 14:02



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




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

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