From c8580eb806512fcc8ca76303e7d837f77c2cb413 Mon Sep 17 00:00:00 2001 From: unarist Date: Thu, 21 Sep 2017 02:07:23 +0900 Subject: [PATCH] Use file extensions in addition to MIME types for file picker (#5029) Currently we're using a list of MIME types for `accept` attribute on `input[type="file"]` for filter options of file picker, and actual file extensions will be infered by browsers. However, infered extensions may not include our expected items. For example, "image/jpeg" seems to be infered to only ".jfif" extension in Firefox. To ensure common file extensions are in the list, this PR adds file extensions in addition to MIME types. Also having items in both format is encouraged by HTML5 spec. https://www.w3.org/TR/html5/forms.html#file-upload-state-(type=file) --- app/models/media_attachment.rb | 3 +++ app/serializers/initial_state_serializer.rb | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index d913e7372a..e4a974f968 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -25,6 +25,9 @@ class MediaAttachment < ApplicationRecord enum type: [:image, :gifv, :video, :unknown] + IMAGE_FILE_EXTENSIONS = ['.jpg', '.jpeg', '.png', '.gif'].freeze + VIDEO_FILE_EXTENSIONS = ['.webm', '.mp4', '.m4v'].freeze + IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif'].freeze VIDEO_MIME_TYPES = ['video/webm', 'video/mp4'].freeze diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb index 9ee9bd29c8..88bbc0dff3 100644 --- a/app/serializers/initial_state_serializer.rb +++ b/app/serializers/initial_state_serializer.rb @@ -46,6 +46,6 @@ class InitialStateSerializer < ActiveModel::Serializer end def media_attachments - { accept_content_types: MediaAttachment::IMAGE_MIME_TYPES + MediaAttachment::VIDEO_MIME_TYPES } + { accept_content_types: MediaAttachment::IMAGE_FILE_EXTENSIONS + MediaAttachment::VIDEO_FILE_EXTENSIONS + MediaAttachment::IMAGE_MIME_TYPES + MediaAttachment::VIDEO_MIME_TYPES } end end