@Konboi memo

主に技術に関してつらつらと。

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 となってしまう事です。

f:id:Konboi:20130719172418p:plain

解決方法

ドキュメントをみたら書いてありました。

アップロードする時点で content-type を指定してあげる必要があったみたいです。

uploader.write(Pathname.new("upload file path"), :content_type => "movie/mp4")

こんな風にcontent_typeをしてしてアップロードしてあげると

f:id:Konboi:20130719175539p:plain

このように Content-type を指定出来ます。

  • 追記 2013/07/23
Content-Type movie/mp4

になってますが、正しくは

Content-Type video/mp4

ですね。 お恥ずかしい><;

まとめ

  • なにかあったらとりあえず、ドキュメント読もう。
  • できるとは思ってたけど、Webの画面でContent-Typeにmovieとか無くて焦っった。

f:id:Konboi:20130719180433p:plain