私は、ユーザーのアップロードしたビデオをペーパークリップ宝石とs3ストレージの助けを借りて自分のRoRサイトに追加しています。何らかの理由で、ユーザーがmp4ファイルをアップロードするたびに、s3がそのファイルのコンテンツタイプをvideo/mp4
の代わりにapplication/mp4
と設定することがわかりません。私は初期化ファイルにMP4のMIMEタイプを登録しているs3のmp4ファイルのコンテンツタイプを設定する
注:ここでは
Mime::Type.lookup_by_extension('mp4').to_s => "video/mp4"
は私のPostモデルの関連する部分である:
has_attached_file :video,
:storage => :s3,
:s3_credentials => "#{Rails.root.to_s}/config/s3.yml",
:path => "/video/:id/:filename"
validates_attachment_content_type :video,
:content_type => ['video/mp4'],
:message => "Sorry, this site currently only supports MP4 video"
私はクリップに何をしないのですおよび/またはs3のセットアップ。
#### Railsの私の知識を超えて、MP4のための私のデフォルトのMIMEタイプは、ファイルが含まれているいくつかの理由
#####アップデートは以下の通りです:
MIME::Types.type_for("my_video.mp4").to_s
=> "[application/mp4, audio/mp4, video/mp4, video/vnd.objectvideo]"
したがって、paperclipがmp4ファイルをs3に送信すると、ファイルのMIMEタイプが最初のデフォルトである "application/mp4"として識別されるようです。そのため、s3はファイルをコンテンツタイプが "application/mp4"であると識別します。私はこれらのmp4ファイルのストリーミングを有効にしたいので、MIMEタイプが「video/mp4」であることを識別するためにpaperclipが必要です。
これを可能にするためにpaperclip(おそらくbefore_post_processフィルタ)を修正する方法がありますか、または「ビデオ/ mp4」としてmp4ファイルを識別するためにinitファイルからレールを変更する方法があります。もし私がどちらかをすることができれば、どちらの方が最善かです。あなたの助け
は.SVGアップロードで同様の問題がありました。これは私の問題を解決しました::s3_headers => {"Content-Type" => "image/svg + xml"} – DavidMann10k