0

如果相关文件尚不存在,我有一些类似的代码可以正常工作。

if AWS::S3::S3Object.exists? file_name, bucket.name + path_to_images
  puts "file exists (deleting)"
  AWS::S3::S3Object.delete file_name, bucket.name + path_to_images, :force => true
end

AWS::S3::S3Object.store file_name, 
   File.read(file_path), 
   bucket.name + path_to_images, 
   :content_type => 'image/png',
   :access => :public_read

`rm #{file_path}`

我遇到的问题是如果文件确实存在,我想用新副本覆盖它......现在我不确定覆盖它是否有问题,所以我尝试先删除文件,如果它已经存在. 那似乎也不起作用。所以我认为它要么没有删除它,要么也被缓存了。

当显示图像时,它当然会带有 ?123232 一个随机数,我什至尝试删除浏览器缓存只是为了好玩。

我敢肯定,我缺少一些简单的东西,而且无论如何可能是一种更简洁的方法。

谢谢

更新:我认为问题一定与云端或常规 s3 缓存有关,因为最终......它确实更新了。但仅仅过了一天左右?而且它不是我的浏览器缓存它,所以它可能是这样的。任何人都知道如何告诉它转储缓存?

4

2 回答 2

0

关于什么

File.open(file_path)

而不是 File.read。这应该可以解决问题:)

彼得

于 2010-07-31T07:35:16.687 回答
0

我从未遇到过 s3 缓存或类似问题的任何问题。很有可能,我仍然认为这是一个本地缓存问题,因为缓存可能发生在多个地方。为了确认,我建议您查看亚马逊存储桶中的实际文件并查看更新后得到的内容(我认为亚马逊现在已将其内置到他们的 s3 帐户站点中,否则我对 cloudberry http:// cloudberrylab.com/)。或者,您可以在更新文件后尝试从另一台计算机访问它。

于 2010-08-01T05:35:11.993 回答