これは私を狂わせています。Amazon S3でCarrierWaveを使用しているので、ファイルをバケットに安全にアップロードできます。今度は(別のリクエストで)ファイルを取得して、ダウンロードとしてブラウザーに配信しようとしています。
ファイルは、.zipファイルなど、何でもかまいません。画像の保存には使用していません。
バケットはプライベートであり、パブリックではないため、S3URLだけを使用することはできません。
これが私の取得コードです:
au = @note.attachment
au.retrieve_from_store!(File.basename(@note.attachment.to_s))
au.cache_stored_file!
cache_stored_fileのコードエラー!ライン。エラーをスローする:
undefined method `body' for nil:NilClass
オブジェクトを調べてみると、問題ないように見えます。@ note.attachmentを出力すると、キーなどを使用してAmazons3のURLをはっきりと確認できます。
Ivはウェブのいたるところにあり、私はそれを理解することができます。Ivは、同じ問題を抱えている少数の人々が、私の場合とは関係のないこと(imagemagickメソッドを使用するなど)を実行して問題を解決したことを発見しました。これも、単なるファイルです。
処理や画像の処理はありません。ダウンロードとしてファイルをブラウザに返したいだけです。
誰か助けてもらえますか?
これが私のアップローダーです:
class AttachmentUploader < CarrierWave::Uploader::Base
storage :fog
def store_dir
"#{Rails.env}/#{model.id}"
end
def cache_dir
"#{Rails.root}/tmp/attachments"
end
end
とトレース
carrierwave (0.8.0) lib/carrierwave/storage/fog.rb:225:in `read'
carrierwave (0.8.0) lib/carrierwave/uploader/cache.rb:77:in `sanitized_file'
carrierwave (0.8.0) lib/carrierwave/uploader/cache.rb:116:in `cache!'
carrierwave (0.8.0) lib/carrierwave/uploader/cache.rb:73:in `cache_stored_file!'