繁体   English   中英

如果使用 ftp_put 上传到远程服务器,则保留文件修改时间戳

[英]Preserving file modified timestamp if using ftp_put to upload to remote server

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

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

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

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

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

我认为有两种可能性,如果 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));

感谢 AbraCadaver 的提示。 经过一些测试和更多研究后,这是对我有用的代码。 我必须在ftp_put之后执行此操作,然后使用MFMT而不是MDTM ,因为MDTM语法对我不起作用。 它有效,感谢大家。

foreach (glob("$path/Content/*.*") as $filename) {
    $time = date('YmdGis', filemtime($filename));
    $contentupstate = ftp_put($connection, "Content/". basename($filename) , $filename, FTP_BINARY); 
    $filemodstate = ftp_raw($connection, "MFMT " . $time . " Content/". basename($filename)); 
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM