首页 > 解决方案 > 如果使用 ftp_put 上传到远程服务器,则保留文件修改的时间戳

问题描述

我有一个 php 脚本,可以将文件从一个文件夹上传到远程 ftp 服务器。将文件上传到远程服务器可以正常工作。连接很好。

但是,上传文件的文件修改时间戳始终是它们传输到远程服务器的时间。当我使用 ftp_put 上传到远程服务器时,有什么方法可以保留修改的时间?还是我需要不同的方法?

下面是代码。连接很好,ftp_put 完成了它的工作。

foreach (glob("$path/Content/*.*") as $filename) {
    $contentupstate = ftp_put($connection, "Content/". basename($filename) , $filename, FTP_BINARY); 
};

只是想检查这是否可能,或者我们是否必须在远程服务器上做一些事情。感谢任何会提供帮助的人。

标签: phpftpput

解决方案


我认为有两种可能性,如果 FTP 服务器支持它们(未经测试)。首先以正确的格式获取修改时间:

$time = date('YmdGis', file_mtime($filename));

在 PUT 之前(我认为):

$stat = ftp_raw($connection, "MDTM $time Content/". basename($filename));

或者在 PUT 之后:

$stat = ftp_raw($connection, "SITE UTIME $time $time $time Content/". basename($filename));

推荐阅读