1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Fix issue ActiveStorage direct upload disk

Fix an issue in ActiveStorage where a direct upload to disk storage
would fail due to a content type mismatch if the file was uploaded using
a mime-type synonym.
This commit is contained in:
Graham Conzett 2018-10-07 15:22:58 -04:00
parent 4429540995
commit 1986048d27
2 changed files with 12 additions and 1 deletions

View file

@ -61,6 +61,7 @@ class ActiveStorage::DiskController < ActiveStorage::BaseController
end end
def acceptable_content?(token) def acceptable_content?(token)
token[:content_type] == request.content_type && token[:content_length] == request.content_length Mime::Type.lookup(request.content_type) == token[:content_type] &&
token[:content_length] == request.content_length
end end
end end

View file

@ -67,6 +67,16 @@ class ActiveStorage::DiskControllerTest < ActionDispatch::IntegrationTest
assert_not blob.service.exist?(blob.key) assert_not blob.service.exist?(blob.key)
end end
test "directly uploading blob with different but equivalent content type" do
data = "Something else entirely!"
blob = create_blob_before_direct_upload(
byte_size: data.size, checksum: Digest::MD5.base64digest(data), content_type: "application/x-gzip")
put blob.service_url_for_direct_upload, params: data, headers: { "Content-Type" => "application/x-gzip" }
assert_response :no_content
assert_equal data, blob.download
end
test "directly uploading blob with mismatched content length" do test "directly uploading blob with mismatched content length" do
data = "Something else entirely!" data = "Something else entirely!"
blob = create_blob_before_direct_upload byte_size: data.size - 1, checksum: Digest::MD5.base64digest(data) blob = create_blob_before_direct_upload byte_size: data.size - 1, checksum: Digest::MD5.base64digest(data)