从FTP下载文件,同时保留原始的“最后更改”日期

问题描述 投票:2回答:2

我在PHP中构建了一个FTP类,它具有从FTP服务器下载文件的功能。

到目前为止这是功能

public function downloadData($serverFile, $localPath)
{
    $fileName   = basename($serverFile);        
    $file       = $localPath.$fileName;
    $download   = false;

    if(!file_exists($file))
    {
        // try to download $server_file and save to $local_file
        if(ftp_get($this->connection_id, $file, $serverFile, FTP_BINARY)) {
            $download = true;
        }
    }

    return $download;
}

基本上它工作正常,但在保存数据时,文件的“最后更改日期”设置为当前日期/时间。我想以某种方式阻止这种情况,因为原始日期对我的需求很重要。

有没有办法保留文件的原始修改日期?

php ftp
2个回答
1
投票

听起来你相信有些东西会覆盖时间戳。没有。在FTP下载期间根本不传输时间戳。因此,本地文件的最后修改时间与传输时间(=上次修改本地文件)相匹配。


但是,您当然可以在下载完成后明确设置时间戳。

  • 使用ftp_mdtm检索FTP服务器上源文件的时间戳。
  • 使用touch设置目标本地文件的时间戳。
touch($file, ftp_mdtm($this->connection_id, $serverFile));

-2
投票

修改文件时,无法阻止系统更新修改日期。但是,这很大程度上取决于你为什么需要创建日期?

不幸的是,如果您在Linux / Unix上运行,则无法访问创建日期信息,因为只存储了上次修改日期。但是对于Windows,您可以使用filectime,它将返回创建时间

© www.soinside.com 2019 - 2024. All rights reserved.