您的位置:程序门 -> vb -> 基础类



求救!vb程序中如何下载服务器端文件存放到本地?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


求救!vb程序中如何下载服务器端文件存放到本地?[已结贴,结贴人:luckyjiajia_1981]
发表于:2007-04-05 13:07:07 楼主
我想实现这样的功能:vb程序运行的时候,自动从服务器下载一个文件(*.txt)到本地.这个文件中包含其它相关文件的名称,下载成功后分析该文件,然后再从服务器下载相关文件到本地。

现在有两个难点:
1.   如何将文件从服务器端下载到本地?
      服务器是否必须建立ftp站点,使用iis建立的虚拟路径是否可以?

2.   如何同步等待文件下载成功后,才开始执行其它的代码?
      (即下载的过程中,让程序处于等待状态?)
发表于:2007-04-05 13:14:491楼 得分:100
1.   如何将文件从服务器端下载到本地?
      服务器是否必须建立ftp站点,使用iis建立的虚拟路径是否可以?
可以用iis的虚拟路径,我就是这么做的,用   microsoft   internet   transfer   control   6.0   (sp6)部件
例子:
private   sub   form_load()
      '********************************************
      '先把服务器上的版本文件下载到本地
     
      dim   weburl   as   string
      dim   b()   as   byte
      weburl   =   "http://ce.midea.com.cn:8080/midea/uploaddata/docs/vernew.txt "     '更新程序所在地址
      b()   =   inet1.openurl(weburl,   icbytearray)
      open   app.path   &   "\vernew.txt "   for   binary   access   write   as   #1   '将更新的文件保存到本地,并以vernew.txt命名
      put   #1,   ,   b()
      close   #1
 


      '打开本机版本文件,读出版本号
        'msgbox   app.path
        open   app.path   &   "\ver.txt "   for   input   as   #1   len   =   10
        line   input   #1,   stra
        close   #1
       
        'msgbox   app.path
      '打开服务器拷贝下来的版本文件,读出版本号
        open   app.path   &   "\vernew.txt "   for   input   as   #1   len   =   10
        line   input   #1,   strb
        close   #1
         
        if   stra   <>   strb   then   '如果版本不一致,那么将服务器上的程序文件、版本文件覆盖本地对应文件:
              label1.caption   =   "正在更新程序,请稍等 "
             
              dim   weburl2   as   string
              dim   c()   as   byte
              weburl2   =   "http://ce.midea.com.cn:8080/midea/uploaddata/docs/bpbj2007.exe "     '更新程序所在地址
              c()   =   inet1.openurl(weburl2,   icbytearray)
              open   app.path   &   "\bpbj2007.exe "   for   binary   access   write   as   #1   '将更新的文件保存到本地,并以bpbj2007.exe命名
              put   #1,   ,   c()
              close   #1
             
              dim   weburl3   as   string
              dim   d()   as   byte
              weburl3   =   "http://ce.midea.com.cn:8080/midea/uploaddata/docs/vernew.txt "     '更新版本文件所在地址
              d()   =   inet1.openurl(weburl3,   icbytearray)
              open   app.path   &   "\ver.txt "   for   binary   access   write   as   #1   '将更新的文件保存到本地,并以ver.txt命名
              put   #1,   ,   d()
              close   #1
             
              label1.caption   =   "   程序更新完毕 "
              'msgbox   app.path   &   "bpbj2007.exe "
              x   =   winEXEC(app.path   &   "\bpbj2007.exe ",   1)
        else
             
              'msgbox   app.path   &   "\bpbj2007.exe "
              x   =   winEXEC(app.path   &   "\bpbj2007.exe ",   1)
             
        end   if
       
        end
       
end   sub


2.   如何同步等待文件下载成功后,才开始执行其它的代码?
      (即下载的过程中,让程序处于等待状态?)

你把其他代码放入另一个程序,等这个程序执行完后   winEXEC(app.path   &   "\另一个程序.exe ",   1)即可调用另一个程序了

发表于:2007-04-05 14:11:362楼 得分:0
mark
发表于:2007-04-05 14:15:443楼 得分:0
尝试了下,发现txt文件是可以的。但是自定义文件格式好像不可以,我的文件格式是*.fom,请问有办法解决吗?
发表于:2007-04-05 14:18:444楼 得分:0
“自定义文件格式好像不可以”是什么意思,无法下载吗?
在iis里把mime里添加*.fom试试。
发表于:2007-04-05 14:19:285楼 得分:0
建议用txt或xml.
xml读取比较方便.

可能传输非文本编码的内容会出现一定问题
因为http传输的是mime块...

不大了解inet控件是怎么处理的.
发表于:2007-04-05 14:25:486楼 得分:0
“自定义文件格式好像不可以”的意思就是说那个文件后缀名是自定义的,系统可能不认识,实际上里面的内容也是文本。

weburl2   =   "http://...../*.fom "文件下载下来,里面内容是错误描述。
iis的mime里添加*.fom尝试了下,也不行。


快速检索

最新资讯
热门点击