如何使用 GCS Ruby SDK 生成具有内容类型配置的预签名 URL

How to generate a presigned URL with content-type disposition using GCS Ruby SDK

在 Amazon S3 SDK 中,当生成预签名 URL 时,我可以生成 URL 设置内容配置,但我找不到使用 [= 配置这些选项的类似方法20=].

我们可用的方法调用是:

https://www.rubydoc.info/gems/google-cloud-storage/0.20.0/Google/Cloud/Storage/File#signed_url-instance_method

我正在尝试将文件直接上传到 Google 存储桶,而不是通过我的 Rails 服务器,我想设置通过预签名 [=] 上传的文件的内容处置23=]。有没有办法做到这一点?有没有办法通过预签名 URL?

设置对象元数据
require "google/cloud"

gcloud = Google::Cloud.new
storage = gcloud.storage

bucket = storage.bucket "my-todo-app"
file = bucket.file "avatars/heidi/400x400.png"
shared_url = file.signed_url
# The parameters it takes is: signed_url(method: nil, expires: nil, content_type: nil, content_md5: nil, issuer: nil, client_email: nil, signing_key: nil, private_key: nil)

# how do we add content_disposition?
# how do we add object meta data?

我正在寻找相同的答案,到目前为止,我已经找到了另一篇 Stack Overflow 文章,它没有直接针对 Ruby SDK,但它确实提供了一条很好的信息。

Google Cloud Storage: download a file with a different name

You can also generate signed URLs that include the response-content-disposition query parameter. Then the users will be making authorized requests to download the resource.

看来您可以将查询参数 ?response-content-disposition=[disposition-string-urlencoded] 添加到生成的签名字符串中。

所以,我查看了 Ruby SDK 中的文件对象定义,看来您可以这样做:

file.content_dispostion = "attachment" # or whatever your disposition is
url = file.signed_url

注意:如果您在我编辑之前阅读了我的条目,我深表歉意。