AWS::S3 を使ってS3にアップロードするときにContent-Typeを指定する
はじめに
今回 aws-sdk を使って S3 に動画をアップロードしていました。 アップロードのコードはこんな感じです。
s3 = AWS::S3.new( access_key_id: CarrierWave::AWS_ACCESS_KEY, secret_access_key: CarrierWave::AWS_SECRET_ACCESS_KEY ) bucket = s3.buckets[CarrierWave::BUCKET_NAME] uploader = bucket.objects["upload-path" ] uploader.write(Pathname.new("target file path"))
今回アップロードしたものは、 mp4 と mp4をffmpegで変換した ogv ファイルになります。
それで問題になったのは、上記のコードでアップロードしても、問題なくアップロードはできるんですが、Content-Typeが下記の用に image/jpeg
となってしまう事です。
解決方法
ドキュメントをみたら書いてありました。
アップロードする時点で content-type を指定してあげる必要があったみたいです。
uploader.write(Pathname.new("upload file path"), :content_type => "movie/mp4")
こんな風にcontent_typeをしてしてアップロードしてあげると
このように Content-type を指定出来ます。
- 追記 2013/07/23
Content-Type movie/mp4
になってますが、正しくは
Content-Type video/mp4
ですね。 お恥ずかしい><;
まとめ
- なにかあったらとりあえず、ドキュメント読もう。
- できるとは思ってたけど、Webの画面でContent-Typeにmovieとか無くて焦っった。