ユーザーには2種類の画像アップロード方法があります。 1つはシンプルなHTMLフォームで、もう1つはAurigmaというiPhoneアプリを通してです。 Paperclipを使用して画像を処理し、S3に保存します。 Aurigmaでアップロードされた画像は、誤ったコンテンツタイプになり、アプリケーションとして開くことになります。AurigmaのコンテンツタイプをS3にアップロードする方法を教えてください。
私は2つのソリューションを試してみました:両方のソリューションが無視されているかのように思え
before_post_process :set_content_type
def set_content_type
self.image.instance_write(:content_type, MIME::Types.type_for(self.image_file_name).to_s)
end
:
before_save :set_content_type
def set_content_type
self.image.instance_write(:content_type,"image/png")
end
とします。
Aurigmaバージョン1.3.2のpaperclipを使用しており、iPhoneからスクリーンショットをアップロードしています。
has_attached_file :image, {
:convert_options => { :all => '-auto-orient' },
:styles => {
:iphone3 => "150x150",
:web => "300x300"
},
:storage => :s3,
:bucket => ENV['S3_BUCKET'],
:s3_credentials => {
:access_key_id => ENV['S3_KEY'],
:secret_access_key => ENV['S3_SECRET']
},
:path => "/pictures/:id/:style.:extension",
:url => "/pictures/:id/:style.:extension"}
}
ありがとうございますが、これを実装する方法がわかりません。 Paperclipの設定を私の質問に追加しました。 PaperclipはS3とのやりとりを処理するので、バケットにアクセスしてオブジェクトを見つけることはできません。 S3宝石を使ってバケツに直接アクセスし、何らかの形で画像を取得してコンテンツタイプを変更することをお勧めしますか? –
@SjorsProvoost - 私はルビーの開発者ではないので、空白を埋める必要がある... AurigmaやPaperclipを使用してファイルをアップロードするときは、content-typeを設定すると、これを設定するオプションがあります。 Paperclipは拡張機能に基づいて設定しているようですが、必要に応じてこれを上書きすることができます:http://stackoverflow.com/questions/2581157/overriding-content-type-for-rails-paperclip-pluginそれ以外の場合は、AWS SDKを直接使用してS3内のファイルを(自分自身に)コピーし、正しい 'content-type'を設定します。 –
またはASW SDKを使用して、サイトで使用するURLを生成し、URLに 'content-type'を設定します。これは、S3で設定されているものを変更するのではなく、異なる 'content-type'でファイルを提供するだけです。私はPaperclipがおそらくあなたのためにこれをするオプションを持っていると思う... ...私はより具体的にはできません申し訳ありません。 –