主题:诚征VFP-FTP远程传输文件代码
北京惬意
[专家分:1330] 发布于 2010-03-09 08:04:00
受高人指点,查阅了一些资料,觉得VFP-FTP远程传输文件模式适合于我。
苦于本人不懂英文,众多资料里难以筛选出自己所要的东西。
敬请高人帖出或用其它方式传来代码为盼,在下不胜感激!
回复列表 (共20个回复)
11 楼
zxs4785 [专家分:410] 发布于 2010-03-10 12:19:00
ftp传输其实在木瓜的myfll.fll就有现成的,但是用ftp也能做出实用的互联网应用系统,那我也不用研究其他方案了。
12 楼
liupeisong [专家分:2340] 发布于 2010-03-11 01:34:00
偶实在是看下去了!
楼主啊,这个方案是行不通的!
你的《北京惬意商务软件》能卖得比较好,这个我很佩服,至少本人做的VFP程序就一分钱都没有卖过,估计你成功的主要原因是你对这块的业务流程非常了解。但是我觉得你现在想转到网络上运行(特别是远程的网络),有两个致命的问题:
1、原来的软件完全是按单机版开发的,想不改动或很少的改动就变成网络版是不可能的;
2、从提的一系列问题来看,好象你似乎只熟悉VFP,对于其他数据库、网络、其他编程语言不太了解,也不是很想去了解,所以想的一些方法或办法都有很大的漏洞或不太现实。
所以,别浪费时间了!
网络上的应用从发展来看不外是3种:
1、FS(文件共享)型,顶楼的大致可以算这种;
2、CS型;
3、BS型。
这种远程网络版的管理软件显然只能使用2和3,其中BS型一般开发和维护难度都更大,所以CS型才适合你。如果你实在不想换编程语言,建议你使用以下种方案:
1、使用VPN技术构建网络;
2、数据库采用SQL SERVER放在服务器上,编程语言使用VFP(这个在VFP9.0的帮助中有很大篇幅介绍,如果英文不好可以去梅子论坛下汉化的帮助),这样你可以不用去学一门新的语言;
3、在编程中牢记要改变以往在VFP中的习惯,每次仅取必要的数据到客户端,就是统计之类的也在服务器中使用存储过程来实现,以最大限度地降低网络负荷。
另外,千万不要抵触学习新的或旧的其他技术,不要只知道VFP!
13 楼
北京惬意 [专家分:1330] 发布于 2010-03-11 04:24:00
谢谢10楼发来的资料,但下来后没弄明白是什么东西。
谢谢楼上liupeisong的耐心解说,从中受到很大启发。
本人找到一份资料,帖在下一帖上,供各位朋友讨论。
14 楼
北京惬意 [专家分:1330] 发布于 2010-03-11 04:30:00
目前VFP仍然受到很多程序员的喜爱,特别是在中小规模的单机、局域网的前台应用软件开发中得到了广泛的使用。下面介绍一下如何使用FCREATE()、FWRITE()、FCLOSE()三个函数,在VFP中实现FTP远程传送文件的方法。
FCREATE(cFileName[,nFileAttribute])函数的功能是创建并打开低级文件,其中参数cFileName指定要创建的文件名称,在文件名前可以加入驱动器指示符和路径,如果没有包括驱动器指示符或路径,则在默认目录下创建该文件。NFileAttribute指定文件的属性,可选值为0…7,0为读写方式(默认值),其它参见VFP的随机帮助。返回值为数值型,创建成功返回文件句柄编号,可以把该编号赋给内存变量,从而可以在其他的低级文件函数用此内存变量访问该文件,如果不能创建文件,则返回-1。
FWRITE(cFileHandle,cExpression[,nCharactersWritten])函数的功能是向低级文件函数打开的文件或通信端口写入字符串,其中参数nFileHandle为文件句柄号,或要写入字符串的通信端口,cExpression指定FWRITE()函数写入字符表达式,nCharatersWritten为写入文件或通信端口的cExpression中的字符的数目,返回值为0,表示操作失败。
FCLOSE(,nFileHandle)函数的功能是刷新并关闭低级文件函数打开的文件或通信端口。
下面列出名称为MYFTP()的自定义函数的源代码,该函数首先调用已有的拨号连接,待用户确定线路连通后,创建ftp连接进行文件传输,完成后,关闭ftp通信端口,并提示用户断开拨号连接。
function myftp
***调用拨号网络中名为“我的连接”的拔号连接,如用户为专线或局域网连接,删除该段
run /N rundll32.exe rnaui.dllRnaDial 我的连接
if messagebox('通信线路是否连通,开始传送文件吗?',1)=2
wait wind [取消传送文件,请断开连接线路!] nowait
return -1
endif
*** 创建FTP连接
fp=fcreate(“ftpcp”,0)
if fp=-1
wait wind [不能创建FTP连接,请检查网络配置] nowait
return -1
endif
*** FTP用户登录,192.168.0.1为远程FTP服务器的IP
ss=[open 10.168.0.1]+chr(13)+chr(10)+[ftpusrname]+chr(13)+chr(10)+[usrpasswd]+chr(13)+chr(10)
if fwrite(fp,ss)=0
wait wind [FTP用户登录失败] nowait
fclose(fp)
return -1
endif
***将本地文件(c:\autoexec.bat)传送到远程服务器
ss=[bin]+chr(13)+chr(10)+[put c:\autoexec.bat] +chr(13)+chr(10)
if fwrite(fp,ss)=0
wait wind [上传文件失败] nowait
fclose(fp)
return -1
endif
*** 将远程服务器上的文件(remofile.txt)下载到本地机的默认目录下
ss=[get remofile.txt]+chr(13)+chr(10)+[bye]+chr(13)+chr(10)
if fwrite(fp,ss)=0
wait wind [下载文件出错] nowait
fclose(fp)
return -1
endif
***关闭FTP通信端口
fclose(fp)
wait wind [文件传送成功,请断开连接线路!] nowait
return 0
函数说明:使用FCREATE()函数创建FTP通信端口,FWRITE()函数写入FTP命令行实现本地机向远程服务器的上传及下载文件,FCLOSE()函数关闭FTP通信端口。用户根据自己的需要将上述的代码取舍修改后,加至程序或事件代码中,即可在VFP中实现FTP的远程通信.
责任编辑:小草
http://www.qnr.cn/pc/erji/vf/jiqiao/200912/254375.html
15 楼
北京惬意 [专家分:1330] 发布于 2010-03-11 04:36:00
上一篇中的代码按本人的书写习惯整理后帖的这里,本人正在进一步调试。
FUNCTION MYFTP
* FCREATE() &&连接
* FWRITE() &&读写
* FCLOSE() &&断开
* -----调用拨号网络中名为“我的连接”的拔号连接,如用户为专线或局域网连接,删除该段
RUN /N RUNDLL32.EXE RNAUI.DLLRNADIAL 我的连接
IF MESSAGEBOX('通信线路是否连通,开始传送文件吗?',1)=2
WAIT WIND "取消传送文件,请断开连接线路!" NOWAIT
RETURN -1
ENDIF
* -----创建FTP连接
FP=FCREATE(“FTPCP”,0)
IF FP=-1
WAIT WIND "不能创建FTP连接,请检查网络配置" NOWAIT
RETURN -1
ENDIF
* -----FTP用户登录,192.168.0.1为远程FTP服务器的IP
SS="open 10.168.0.1"+CHR(13)+CHR(10)+"ftpusrname"+CHR(13)+CHR(10)+"usrpasswd"+CHR(13)+CHR(10)
IF FWRITE(FP,SS)=0
WAIT WIND "FTP用户登录失败" NOWAIT
FCLOSE(FP)
RETURN -1
ENDIF
* -----将本地文件(C:\AUTOEXEC.BAT)传送到远程服务器
SS="bin"+CHR(13)+CHR(10)+"put c:\autoexec.bat"+CHR(13)+CHR(10)
IF FWRITE(FP,SS)=0
WAIT WIND [上传文件失败] NOWAIT
FCLOSE(FP)
RETURN -1
ENDIF
* -----将远程服务器上的文件(REMOFILE.TXT)下载到本地机的默认目录下
SS="get remofile.txt"+CHR(13)+CHR(10)+"bye"+CHR(13)+CHR(10)
IF FWRITE(FP,SS)=0
WAIT WIND "下载文件出错" NOWAIT
FCLOSE(FP)
RETURN -1
ENDIF
* -----关闭FTP通信端口
FCLOSE(FP)
WAIT WIND "文件传送成功,请断开连接线路!" NOWAIT
RETURN 0
16 楼
zxs4785 [专家分:410] 发布于 2010-03-11 08:59:00
12楼的liupeisong的确是懂网络应用的foxer。
对楼主的方案,我也是不忍心打击楼主的积极性的;可是不管不问,恐怕也是对楼主不负责的。
17 楼
liupeisong [专家分:2340] 发布于 2010-03-11 11:12:00
偶无语了,不再对此进行评论了
18 楼
北京惬意 [专家分:1330] 发布于 2010-03-12 17:34:00
多谢各位朋友的关注和关心!
面包会有的,牛奶也会有的。
VFP传输文件的方法会有的,能用VFP传输文件的高人肯定也会有的。
19 楼
北京惬意 [专家分:1330] 发布于 2010-03-15 03:32:00
[quote]多谢各位朋友的关注和关心!
面包会有的,牛奶也会有的。
VFP传输文件的方法会有的,能用VFP传输文件的高人肯定也会有的。
[/quote]
20 楼
schoumin [专家分:0] 发布于 2010-12-06 11:24:00
你是说在vfp编程里,实现ftp传输么?如果是,我有,qq17879178,需要的话,一起交流。
我来回复