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

时间:2018-07-23 15:12:52

标签: php ftp

我已经在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;
}

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

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

2 个答案:

答案 0 :(得分:1)

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


但是您当然可以在下载完成后显式设置时间戳。

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

答案 1 :(得分:-2)

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

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