上传文件时保留最后修改日期

6

上传文件时是否有办法保留最后修改日期?使用HTTP POST上传文件时,文件的最后修改日期已经被更改。看过 copy() 的相关内容(请参见此处),但是在我的情况下,文件的最后修改日期已经在临时文件夹中被更改。

HTML:

<!DOCTYPE html>
<html>
    <body>

        <form action="upload.php" method="post" enctype="multipart/form-data">
            Select file to upload:
            <input type="file" name="fileToUpload" id="fileToUpload">
            <input type="submit" value="Upload Image" name="submit">
        </form>

    </body>
</html>

PHP:

<?php

  $target_dir = "uploads/";
  $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
  $uploadOk = 1;
  $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);

  echo "Modified: ".date('d/m/Y H:i:s', filemtime($_FILES['fileToUpload']["tmp_name"]));

?>

输出结果为:修改时间:2016年2月17日 09:02:39 但实际上,该文件最后编辑时间是在2016年2月10日09:34:23。
属性:(创建时间、修改时间、访问时间) 文件属性 有没有办法防止这种情况发生?

1
你无能为力。该文件是在服务器上新创建的,然后操作系统设置属性。它不会复制属性。 - Charlotte Dunois
但在我的情况下,它已经在临时文件夹中创建了一个带有当前时间戳的文件,而不是更改了原文件。上传文件夹中的文件和临时文件夹中的文件是不同的文件,操作系统没有理由使用上传文件夹中文件的时间戳来标记临时文件夹中的文件。您应该遵循@Mr.Engineer的建议:1)使用filemtime()获取上传文件夹中文件的时间戳 2)使用copy()将文件从临时文件夹复制到上传文件夹 3)使用touch()设置上传文件夹中已复制文件的时间戳。 - ankhzet
@ankhzet 请注意,该文件尚未存在于服务器上。uploads/ 文件夹为空。上传的文件是一个新文件。我不想用另一个文件替换它。 - Vince
@Vince,那么“我已经读到当你使用copy()时它会被更改”就没有意义了。文件上传并不会神奇地将一些物理电子从您本地计算机上的文件传输到服务器上。它在服务器上创建一个新文件(因此,其“mtime”设置为当前时间),并用用户浏览器/其他客户端应用程序传输的文件内容填充它。 - ankhzet
2
为了在服务器上标记带有用户机器上文件时间戳的文件,您必须明确地通知服务器该时间戳。这可以通过JavaScript File.lastModifiedDate API完成,但它在浏览器兼容性方面有一定限制。 - ankhzet
显示剩余3条评论
2个回答

2

1
抱歉,您无法保留文件信息。上传的文件将被视为新文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接