使用Fog创建文件时保留(或显式设置)Last-Modified(“mtime”)

时间:2015-07-30 12:24:08

标签: ruby fog last-modified

我正在尝试将文件复制到云端(包括SoftLayer和AWS),我需要保留“Last-Modified”标头,所以当我从云端检索它时,我会看到last_modified时间我提供。 我无法弄清楚该怎么做。我试着用这些方法:

 echo "<td>" .$row['website_url']. "</td>";

但所有文件都是使用当前时间戳创建的,而不是我提供的旧日期:

dir = s3.directories.get("mybucket")
last_modified = Time.at(1437600000) # some time in July 23

dir.files.create(key: "file1.txt", body: "content string", last_modified: last_modified.httpdate)

dir.files.create(key: "file2.txt", body: "content string", last_modified: last_modified)

dir.files.create(key: "file3.txt", body: "content string", 'Last-Modified' => last_modified)

dir.files.create(key: "file4.txt", body: "content string", 'Last-Modified' => last_modified.httpdate)

path = "/tmp/to_upload.txt"
File.open(path, "w+") { |file|
  file.write("content string")
}
FileUtils.touch(path, mtime: last_modified)
dir.files.create(key: "file5.txt", body: open(path))

1 个答案:

答案 0 :(得分:1)

不幸的是,AWS S3不允许用户修改上次修改的值。它将始终设置为您在服务器端修改的时间。您可以在此处详细了解可以修改(或不修改)哪些元数据值:http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#object-metadata