aboutsummaryrefslogtreecommitdiffstats
path: root/activestorage/app/models/active_storage/blob.rb
diff options
context:
space:
mode:
authorGeorge Claghorn <george.claghorn@gmail.com>2018-01-05 11:55:40 -0500
committerGitHub <noreply@github.com>2018-01-05 11:55:40 -0500
commit1e51a38fbc767f2c7e33c0ac548422eebbb5981d (patch)
treeac9cada273b492f231bf1b48d215e36ff78fde05 /activestorage/app/models/active_storage/blob.rb
parent5a5014688873f1d6e1b66075eea8a4356b5a4d07 (diff)
parentd40284b1a44773b03d78ca67a888b94fd330d1b1 (diff)
downloadrails-1e51a38fbc767f2c7e33c0ac548422eebbb5981d.tar.gz
rails-1e51a38fbc767f2c7e33c0ac548422eebbb5981d.tar.bz2
rails-1e51a38fbc767f2c7e33c0ac548422eebbb5981d.zip
Merge pull request #31639 from rosa/master
Force :attachment as content disposition for some content types
Diffstat (limited to 'activestorage/app/models/active_storage/blob.rb')
-rw-r--r--activestorage/app/models/active_storage/blob.rb9
1 files changed, 7 insertions, 2 deletions
diff --git a/activestorage/app/models/active_storage/blob.rb b/activestorage/app/models/active_storage/blob.rb
index 3b48ee72af..8fb53fa787 100644
--- a/activestorage/app/models/active_storage/blob.rb
+++ b/activestorage/app/models/active_storage/blob.rb
@@ -201,8 +201,8 @@ class ActiveStorage::Blob < ActiveRecord::Base
# with users. Instead, the +service_url+ should only be exposed as a redirect from a stable, possibly authenticated URL.
# Hiding the +service_url+ behind a redirect also gives you the power to change services without updating all URLs. And
# it allows permanent URLs that redirect to the +service_url+ to be cached in the view.
- def service_url(expires_in: service.url_expires_in, disposition: "inline")
- service.url key, expires_in: expires_in, disposition: disposition, filename: filename, content_type: content_type
+ def service_url(expires_in: service.url_expires_in, disposition: :inline)
+ service.url key, expires_in: expires_in, disposition: forcibly_serve_as_binary? ? :attachment : disposition, filename: filename, content_type: content_type
end
# Returns a URL that can be used to directly upload a file for this blob on the service. This URL is intended to be
@@ -325,4 +325,9 @@ class ActiveStorage::Blob < ActiveRecord::Base
def analyzer_class
ActiveStorage.analyzers.detect { |klass| klass.accept?(self) } || ActiveStorage::Analyzer::NullAnalyzer
end
+
+
+ def forcibly_serve_as_binary?
+ ActiveStorage.content_types_to_serve_as_binary.include?(content_type)
+ end
end