douxing5199 2017-03-27 11:32
浏览 107
已采纳

在PHP中仅从FTP服务器下载新图像

I made a little script which allows me to download images from FTP server. But, the thing is, whenever I execute the script, ALL images are downloaded. Is there any way to rewrite the code so that it only downloads new images?

My script looks like this:

$ftp_server = "my_server_ip";
$ftp_user = "my_user_name";
$ftp_pass = "my_password";
$DIR="my_path_to_images_folder";

$conn = ftp_connect($ftp_server);
if(!$conn)
{
    exit("Can not connect to server: $ftp_server
");
}

if(!ftp_login($conn,$ftp_user,$ftp_pass))
{
    ftp_quit($conn);
    exit("Can't login
");
}

ftp_chdir($conn,$DIR);

$files = ftp_nlist($conn,'.');
for($i=0;$i<count($files);$i++)
{
    if(!ftp_get($conn,$files[$i],$files[$i],FTP_BINARY))
    {
        echo "Can't download {$files[$i]}
";
    }
    else
    {
        echo "Successfully transferred images!";
    }
}

ftp_quit($conn);

Thank you.

  • 写回答

3条回答 默认 最新

  • dsbj66959 2017-03-27 11:56
    关注

    To download only files that do not exist locally yet, or are newer than the local copy, use:

    $files = ftp_nlist($conn, '.');
    
    foreach ($files as $file)
    {
        $remote_time = ftp_mdtm($conn, $file);
    
        if (!file_exists($file) ||
            (filemtime($file) < $remote_time))
        {
            ftp_get($conn, $file, $file, FTP_BINARY);
            touch($file, $remote_time);
        }
    }
    

    If your server supports MLSD command and you have PHP 7.2 and newer, you can replace ftp_nlist and repeated call to ftp_mdtm with one efficient call to ftp_mlsd function.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 鼠标右键,撤销删除 复制 移动,要怎样删除
  • ¥15 使用MATLAB进行余弦相似度计算加速
  • ¥15 服务器安装php5.6版本
  • ¥15 我想用51单片机和数码管做一个从0开始的计数表 我写了一串代码 但是放到单片机里面数码管只闪烁一下然后熄灭
  • ¥20 系统工程中,状态空间模型中状态方程的应用。请猛男来完整讲一下下面所有问题
  • ¥15 我想在WPF的Model Code中获取ViewModel Code中的一个参数
  • ¥15 arcgis处理土地利用道路 建筑 林地分类
  • ¥20 使用visual studio 工具用C++语音,调用openslsx库读取excel文件的sheet问题
  • ¥100 寻会做云闪付tn转h5支付链接的技术
  • ¥15 DockerSwarm跨节点无法访问问题