打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
在用PB进行开发时常常需要用到ftp功能

在用PB进行开发时常常需要用到ftp功能

(2009-09-21 18:19:56)
标签:

杂谈

分类: pb方面
  ----   在用PB进行开发时常常需要用到ftp功能,最典型的应用就是将数据窗口中的数据生成txt文件,然后将此数据文件用ftp发送到远程服务器上  
  去。由于pb本身并未提供任何ftp的功能,因此想在pb中进行ftp传输,只能应用pb以外的资源。以下是在pb开发中总结出来的几种方法。    
   
  ----   1.   使用外部命令    
   
  ----   这种方法就是在pb程序中运行Windows中自带的ftp命令。具体做法是在程序中生成一个.bat文件,将要运行的ftp命令写到此文件中,再运行这  
  个批处理文件。假设ftp服务器ip为   202.114.67.2,用户名为user,口令12345,现在要将本地c:\temp\下的t00001.txt文件上传到服务器的\txtdata  
  \目录下去。则pb代码如下:    
   
  integer   li_bat   //文件名指针  
  li_bat   =   FileOpen(path_ftp+'get_file.bat',    
  lineMode!,   Write!,   LockWrite!,   Replace!)  
   
  FileWrite(li_bat,   'cd   c:\temp\')  
  FileWrite(li_bat,   'ftp   202.114.67.2')  
  FileWrite(li_bat,   'user)  
  FileWrite(li_bat,   '12345')  
  FileWrite(li_bat,   'put   t00001.txt  
  \txtdata\t00001.txt')  
  FileWrite(li_bat,   'bye')  
  FileWrite(li_bat,   'exit')  
  FileClose(li_bat)  
  Run(path_ftp+'get_file.BAT',Minimized!)  
  messagebox("提示信息","数据上报完毕")  
   
  ----   此方法的优点是简单易行,既不要调用API函数,也不需加入OLE。缺点一是要运行外部命令,将会打开dos窗口,显得不够和谐;二是数据传输  
  成功与否无法判断,在编程时不好控制。    
   
  ----   2.   使用Internet   Transfer控件    
   
  ----   Internet   Transfer控件是网络编程中非常常用的控件。它支持目前Internet上使用最为广泛的两种协议,即Http和Ftp。在windows98中它是由  
  系统自带。有关此控件的详细资料请查看相关书籍。这里我们只使用它的Ftp功能。在PB中加入一个与此控件的OLE,取名ole_1,并按以下数据设置此  
  控件的属性(注意不是ole_1的属性),表中没有列出的属性请用缺省值:    
   
  属性             值                   说明  
  Protocol                 2           指定用Ftp协议  
  Remotehost       202.114.67.2          
  Username         User1          
  Password         12345          
   
  ----   Internet   Transfer控件支持两种数据传输方式,即同步传输方式和异步传输方式。同步传输方式在数据传输时会阻塞程序,此功能是通过调用  
  该控件的OpenUrl方法来实现的;而异步方式则不会阻塞程序,它通过调用控件的Execute方法来实现。同步方式虽然易于控制,但它只能下载文件,  
  不能上传文件,这使得它在实际的应用受到限制。要实现数据的上传下载,只能使用此控件的异步传输方式。要完成上例中的功能,在PB程序中加入  
  以下语句即可:    
   
  Ole_1.object.execute("","put   c:  
  \temp\t00001.txt     \txtdata\t00001.txt")  
   
  ----   同理,如果要将服务器上的文件下载到本地,在程序中加入即下语句:    
   
  Ole_1.   object.execute("","get   \txtdata\t00001.txt   c:\temp\t00001.txt")  
   
  ----   Internet   Transfer控件的功能很强大,利用它足以制作一个功能比较完善的FTP工具,而且它是操作系统自带的,在编程时不需要注册新的控  
  件。但根据笔者的使用经验,此控件也有两个不能忽视的缺点,其一、它的数据上传下载是异步传输的,在每次只运行一个ftp命令时尚可,如果一次  
  运行多个ftp命令就会出错。比如说,我们想先进入服务器的\file目录,再上传数据,这样程序应如下:    
   
  Ole_1.object.execute("","cd   \file\")  
  Ole_1.object.execute("","put    
  c:\temp\t00001.txt     \txtdata\t00001.txt")  
  ----   由于execute方法是异步执行的,它不等第一个语句完成就开始执行第二条语句,这样可能服务器还来不及将当前目录转到\file下数据已经开始  
  上传,造成错误。    
   
  ----   其二、笔者还发现一个莫名其妙的问题,那就是利用此控件进行上传时它会将上传到服务器上的文件的文件名改为大写,如上例中,本地的  
  t00001.txt上传到服务器上后,它的名字会变成T00001.TXT,这在NT上自然无妨,但在Unix机器上就可能带来错误。    
   
  ----   3.   使用Mabry   Internet   FTP/X   Control    
   
  ----   此控件是由Mabry   Software公司提供的一个用于Ftp的控件,读者可以到www.mabry.com上去下载此控件(mftpx.ocx)。经比较,笔者认为在进行  
  ftp传输方面,使用此控件进行编程最方便。它能完成绝大部分Ftp的功能,而且在编程中能很方便地控制程序的运行。比如说要完成前述功能,我们  
  先注册该控件,然后在PB程序中加入一个该控件的Ole,取名Ole_1;一个单行编辑器Sle_1,用为显示有关信息;一个按钮Cb_1,点击它时进行Ftp操  
  作。另设一个boolean   型Instance   Variables,取名is_con,并将它设为false,用于指示网络是否已连通。对该控件的属性进行如下设置:    
   
  属性             值                 说明  
  Host             202.114.67.2          
  Logonname         User          
  Logonpassword     12345            
  Timeout           10                 根据实际情况设置  
   
  ----   在Cb_1的clicked事件中加入以下代码:    
   
  sle_1.text   =   "正在连接....."  
  setpointer(hourglass!)  
  ole_1.object.connect()  
   
  if   is_con   then  
          sle_1.text   =   "开始传输...."  
  ole_1.object.putfile  
  ("c:\temp\t00001.txt","/txtdata/t00001.txt")  
          sle_1.text   =   "传输完毕!"  
  end   if  
   
  setpointer(arrow!)  
  is_con   =   false  
  在Ole_1的各事件中加入相应代码:  
  connected事件:  
  if   fconnected   then  
  sle_1.text   =   "连接成功!"  
          is_con   =   true  
  else  
          sle_1.text   =   "连接失败!"  
          is_con   =   false  
  end   if  
  externalexception事件:  
  sle_1.text   =   "外部错误,可能网络不通"  
   
  action   =   ExceptionIgnore!  
  progress事件:  
  sle_1.text   =   "已传输"  
  +   string(bytestransfered)+"字节....."  
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
几个恶心的批处理
用inet控件可以实现用VB6.0把本地文件上传到ftp服务器
利用Winsock控件实现FTP编程
怎么把多个TXT文件中内容合到一个里面
定时RAR压缩打包并且FTP上传的bat方式 - 异界代码
BAT|一个简单的后门bat文件看批处理命令及一般的后门程序思路
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服