instance method
upload
Ruby on Rails 8.0.4
Since v5.2.8.1Signature
upload(key, io, checksum: nil, content_type: nil, disposition: nil, filename: nil, custom_metadata: {})
No documentation comment.
Parameters
-
keyreq -
ioreq -
checksumkey = nil -
content_typekey = nil -
dispositionkey = nil -
filenamekey = nil -
custom_metadatakey = {}
Source
# File activestorage/lib/active_storage/service/gcs_service.rb, line 21
def upload(key, io, checksum: nil, content_type: nil, disposition: nil, filename: nil, custom_metadata: {})
instrument :upload, key: key, checksum: checksum do
# GCS's signed URLs don't include params such as response-content-type response-content_disposition
# in the signature, which means an attacker can modify them and bypass our effort to force these to
# binary and attachment when the file's content type requires it. The only way to force them is to
# store them as object's metadata.
content_disposition = content_disposition_with(type: disposition, filename: filename) if disposition && filename
bucket.create_file(io, key, md5: checksum, cache_control: @config[:cache_control], content_type: content_type, content_disposition: content_disposition, metadata: custom_metadata)
rescue Google::Cloud::InvalidArgumentError
raise ActiveStorage::IntegrityError
end
end
Defined in activestorage/lib/active_storage/service/gcs_service.rb line 21
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveStorage::Service::GCSService