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 キャッシュと関係があるに違いないと思います。最終的には... 更新されるからです。しかし、1日かそこら後だけですか?そして、それは私のブラウザがキャッシュしているわけではないので、おそらくこれです。キャッシュをダンプするように指示する方法を知っている人はいますか?

4

2 に答える 2

0

s3キャッシングなどで問題が発生したことはありません。キャッシングは複数の場所で行われる可能性があるため、おそらくこれはローカルキャッシュの問題だと思います。確認するために、Amazonバケット内の実際のファイルを表示し、更新後に何が得られるかを確認することをお勧めします(Amazonではこれがs3アカウントサイトに組み込まれていると思います。それ以外の場合は、cloudberry http://で幸運を祈ります。 cloudberrylab.com/)。または、ファイルを更新した後、別のコンピューターからアクセスしてみることもできます。

于 2010-08-01T05:35:11.993 に答える
0

どうですか

File.open(ファイルパス)

File.read の代わりに。これでうまくいくはずです:)

ペトル

于 2010-07-31T07:35:16.687 に答える