dougezhua0017 2018-07-23 15:12
浏览 346
已采纳

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

I've build an FTP class in PHP with a function to download files from the FTP server.

This is the function so far

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;
}

Basically it works fine, but when saving the data the "last change date" of the file is set to the current date/time. I somehow want to prevent this, because the original date is important for my needs.

Is there a way to keep the original modified date of the file?

  • 写回答

2条回答 默认 最新

  • dongwei2030 2018-07-23 16:49
    关注

    It sounds like you believe there's something overwriting the timestamp. There's not. The timestamp is simply not transferred at all during an FTP download. So the local file has last modification time matching the transfer time (= the last time the local file was modified).


    But you can of course explicitly set the timestamp after the download finishes.

    • Use ftp_mdtm to retrieve the timestamp of source file on FTP server.
    • Use touch to set the timestamp of target local file.
    touch($file, ftp_mdtm($this->connection_id, $serverFile));
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥25 关于##爬虫##的问题,如何解决?:
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误