Tôi đang thêm video do người dùng tải lên vào trang web RoR của tôi với sự trợ giúp của đá quý kẹp giấy và bộ nhớ s3. Vì một số lý do mà tôi không thể tìm ra, bất cứ khi nào người dùng tải lên tệp mp4, s3 đặt loại nội dung cho tệp đó là application/mp4
thay vì video/mp4
.đặt loại nội dung cho tệp mp4 trên s3
Lưu ý rằng tôi đã đăng ký loại mp4 kịch câm trong một tập tin khởi tạo:
Mime::Type.lookup_by_extension('mp4').to_s => "video/mp4"
Dưới đây là phần có liên quan của mô hình bài viết của tôi:
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"
tôi đang thiếu gì trong kẹp giấy của tôi và/hoặc s3 thiết lập.
#### Update #####
Đối với một số lý do đó là ngoài kiến thức của tôi về Rails, kiểu MIME mặc định của tôi cho mp4 file chứa như sau:
MIME::Types.type_for("my_video.mp4").to_s
=> "[application/mp4, audio/mp4, video/mp4, video/vnd.objectvideo]"
Vì vậy, khi kẹp giấy gửi một tập tin mp4 để s3, có vẻ như để xác định loại mime của tập tin như là mặc định đầu tiên, "ứng dụng/mp4". Đó là lý do tại sao s3 xác định tệp là có loại nội dung là "application/mp4". Vì tôi muốn bật tính năng phát trực tiếp các tệp mp4 này, tôi cần kẹp giấy để xác định tệp có loại mime "video/mp4".
Có cách nào sửa đổi kẹp giấy (có thể trong bộ lọc before_post_process) để cho phép điều này hay có cách sửa đổi đường ray thông qua tệp init để xác định tệp mp4 dưới dạng "video/mp4". Nếu tôi có thể làm một trong hai, cách nào là tốt nhất.
Cảm ơn sự giúp đỡ của bạn
Đã có một vấn đề tương tự với tải lên .svg. Điều này đã khắc phục được sự cố của tôi:: s3_headers => {"Content-Type" => "image/svg + xml"} – DavidMann10k