回 帖 发 新 帖 刷新版面

主题:诚征VFP-FTP远程传输文件代码

受高人指点,查阅了一些资料,觉得VFP-FTP远程传输文件模式适合于我。
苦于本人不懂英文,众多资料里难以筛选出自己所要的东西。
敬请高人帖出或用其它方式传来代码为盼,在下不胜感激!

回复列表 (共20个回复)

11 楼

ftp传输其实在木瓜的myfll.fll就有现成的,但是用ftp也能做出实用的互联网应用系统,那我也不用研究其他方案了。

12 楼

偶实在是看下去了!

楼主啊,这个方案是行不通的!

你的《北京惬意商务软件》能卖得比较好,这个我很佩服,至少本人做的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 楼

谢谢10楼发来的资料,但下来后没弄明白是什么东西。
谢谢楼上liupeisong的耐心解说,从中受到很大启发。
本人找到一份资料,帖在下一帖上,供各位朋友讨论。

14 楼

目前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.dllRnaDial 我的连接

  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 楼

上一篇中的代码按本人的书写习惯整理后帖的这里,本人正在进一步调试。

FUNCTION MYFTP
* FCREATE() &&连接
* FWRITE()  &&读写
* FCLOSE()  &&断开

* -----调用拨号网络中名为“我的连接”的拔号连接,如用户为专线或局域网连接,删除该段
  RUN /N RUNDLL32.EXE RNAUI.DLLRNADIAL 我的连接
  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 楼

12楼的liupeisong的确是懂网络应用的foxer。

对楼主的方案,我也是不忍心打击楼主的积极性的;可是不管不问,恐怕也是对楼主不负责的。

17 楼

偶无语了,不再对此进行评论了

18 楼

多谢各位朋友的关注和关心!
面包会有的,牛奶也会有的。
VFP传输文件的方法会有的,能用VFP传输文件的高人肯定也会有的。

19 楼

[quote]多谢各位朋友的关注和关心!
面包会有的,牛奶也会有的。
VFP传输文件的方法会有的,能用VFP传输文件的高人肯定也会有的。
[/quote]

20 楼


你是说在vfp编程里,实现ftp传输么?如果是,我有,qq17879178,需要的话,一起交流。

我来回复

您尚未登录,请登录后再回复。点此登录或注册