| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4676 人关注过本帖
标题:关于FtpUploadFile的问题
取消只看楼主 加入收藏
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:171
专家分:19
注 册:2013-8-12
结帖率:87.5%
收藏
已结贴  问题点数:20 回复次数:30 
关于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
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:171
专家分:19
注 册: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
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:171
专家分:19
注 册:2013-8-12
收藏
得分:0 
我也尝试过先连通,请 TonyDeng 大侠指点。
2013-08-12 19:00
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:171
专家分:19
注 册: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
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:171
专家分:19
注 册:2013-8-12
收藏
得分:0 
万幸万幸!!

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

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

小弟的邮箱是:eepc@

[ 本帖最后由 eepcvfp 于 2013-8-13 14:13 编辑 ]
2013-08-13 14:02
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:171
专家分:19
注 册:2013-8-12
收藏
得分:0 
以下是引用TonyDeng在2013-8-13 14:03:32的发言:

方案一是最省事的,但要看照片的尺寸和网速,实测能否接受那个延缓时间。如果实在不行,用方案二B,稍微改一下,采取浏览器缓存的方式,读过一次,照片就缓存在本地机中,同时修改一下数据表的字段,增加是否应该重新下载的标志字段,以防照片变动,当然代码多了,但速度会快了,这个是最快的。
谢谢大侠指教,我按您的方式去修改一下代码。
方案二B的方式比FTP还快吗?我原本以为FTP是最快最稳定的方式。

再问大侠一句:在 INSERT INTO 表名 字段列表 VALUES 值1,值2……  这个语句中,如果“字段列表”的顺序与物理表的字段顺序不一致,会影响插入效率吗?

[ 本帖最后由 eepcvfp 于 2013-8-13 14:34 编辑 ]
2013-08-13 14:28
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:171
专家分:19
注 册:2013-8-12
收藏
得分:0 
大侠的文件已经收到,再次感谢!
请问那个头文件 wininet.h 是添加进项目中,直接打包进项目吗?还是放在运行目录中?
2013-08-13 14:32
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:171
专家分:19
注 册:2013-8-12
收藏
得分:0 
“事实上,这条语句在内部被转换为一对一对的REPLACE语句。”

我用SPT方式,用 INSERT INTO 表名 字段列表 VALUES 值1,值2……  这个语句更新远程表,也会被“转换为一对一对的REPLACE语句”吗?

FTP方式(即方案一)还是可以采用大侠说的“缓存”方式的。
论稳定性呢? FTP方式 和 方案二B方式哪个稳定性高一些呢?
2013-08-13 14:38
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:171
专家分:19
注 册:2013-8-12
收藏
得分:0 
我去研究一下大侠的代码,感谢大侠出手相助,解决了小弟的困扰。
2013-08-13 14:46
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:171
专家分:19
注 册:2013-8-12
收藏
得分:0 
您让我学到不少新知识,根据大侠所说:FTP方式最快、最稳定,我想了一下,能不能把方案一改为这样:

当学生第一次注册时,用大侠提供的函数上传照片,把照片在FTP服务器上的路径存入“学生信息表”中的“照片”字段。

第一次查询学生信息时,根据“照片”字段存储的路径下载照片,放入“缓存”(其实就是一个自定义的文件夹),以后查询学生信息就先去“缓存”寻找,如果“缓存”中有该学生的照片就直接显示,没有就重新下载。

如果学生更新了照片,程序就删除该学生在“缓存”中的照片,查询时,由于程序在“缓存”中找不到该学生的照片,自然会重新下载,确保照片的准确性。

大侠看这个思路可行吗?
2013-08-13 14:56
快速回复:关于FtpUploadFile的问题
数据加载中...
 
   



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

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