Foxtable(狐表)用户栏目专家坐堂 → 如何实现ftp远程文件不用每次都重新下载


  共有1909人关注过本帖树形打印复制链接

主题:如何实现ftp远程文件不用每次都重新下载

帅哥哟,离线,有人找我吗?
happyft
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1916 积分:17140 威望:0 精华:0 注册:2014/7/29 19:09:00
如何实现ftp远程文件不用每次都重新下载  发帖心情 Post By:2018/4/25 8:42:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下: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服务器上此文件更新了才重新下载
谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/25 8:57:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1916 积分:17140 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By: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的文件路径要如何写呢?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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)


 回到顶部