以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何实现ftp远程文件不用每次都重新下载  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=118094)

--  作者:happyft
--  发布时间:2018/4/25 8:42:00
--  如何实现ftp远程文件不用每次都重新下载

图片点击可在新窗口打开查看此主题相关图片如下:ftp远程文件.jpg
图片点击可在新窗口打开查看


帮助中远程文件是否自动更新这个功能写在代码中是用ftp的哪个属性或方法?

Dim ftp As New FtpClient
ftp.Host = ftp_Host  \'ftp服务器地址
ftp.Account = ftp_User  \'ftp登录帐号
ftp.Password = ftp_Pwd   \'ftp登录密码
ftp.Port = ftp_Port  \'ftp端口号
ftp.UTF8 = True  \'避免中文乱码
ftp.Changedir("\\使用指南")

Dim vn As String = args(0)  \'传入的视频文件名称
If TryConnectHost(ftp_Host) Then 
    If ftp.Connect Then \'如果FTP已连接
        If ftp.FileExists(vn & ".Exe") Then  \'如果文件存在则下载
            If ftp.Download(vn & ".Exe", ProjectPath & "RemoteFiles\\" & vn & ".Exe", True) Then \'如果下载文件成功
                \'打开本地下载的文件
                Dim Proc As New Process \'定义一个新的Process
                Proc.File = ProjectPath & "RemoteFiles\\" & vn & ".Exe" \'指定要打开的文件
                Proc.Start()
            Else
                MessageBox.Show("ftp下载文件失败,请稍后再试!")
            End If
            ftp.Close  \'关闭本次连接
       \'Else
            \'MessageBox.Show("ftp服务器上没有此文件!")
        End If
    Else
        MessageBox.Show("无法连接ftp服务器,请稍后再试!")
    End If
End If

上面的代码每次都会重新下载远程文件,如何才能实现本地RemoteFiles目录下有就不用下载,如果ftp服务器上此文件更新了才重新下载
谢谢!

--  作者:有点甜
--  发布时间:2018/4/25 8:57:00
--  

对比文件的大小、时间等属性

 

http://www.foxtable.com/webhelp/scr/1410.htm

 

http://www.foxtable.com/webhelp/scr/2707.htm

 


--  作者:HappyFt
--  发布时间:2018/4/25 11:03:00
--  
有个问题,本地文件的大小用
Dim ifo1 As new FileInfo(ProjectPath & "RemoteFiles\\" & vn & ".Exe"  这个没问题

已用了
ftp.Changedir("\\使用指南")
而且ftp上确实已经有那个文件

Dim ifo2 As new FileInfo(ftp.CurrentDir & "/" & vn & ".Exe")
Dim ifo2 As new FileInfo("\\使用指南\\" & vn & ".Exe")
Dim ifo2 As new FileInfo(vn & ".Exe")

上面这三种写法都提示出错,获取ftp上的文件信息时ftp的文件路径要如何写呢?

--  作者:有点甜
--  发布时间:2018/4/25 11:05:00
--  

要用ftpclient的方法,如

 

GetFileSize

返回ftp上指定文件的大小,以字节为单位。

示例

Dim ftp1 As New FtpClient
ftp1.Host=
"196.128.143.28"
ftp1
.Account = "foxuser"
ftp1
.Password = "138238110"
Dim 
sz As Integer
sz = ftp1.GetFileSize(
"\\photo\\jz.png")
Output.Show(
"文件大小:" & sz)

 

GetFileTime

返回ftp上指定文件最后一次修改的日期时间。

Dim ftp1 As New FtpClient
ftp1
.Host="196.128.143.28"
ftp1
.Account = "foxuser"
ftp1
.Password = "138238110"
Dim 
sz As Date
sz = ftp1.GetFileTime(
"\\photo\\jz.png")
Output.Show(
"修改时间:" & sz)