2

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

我们可用的方法调用是:

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

我正在尝试将文件直接上传到 Google 存储桶,而不是通过我的 Rails 服务器,并且想要设置通过预签名 URL 上传的文件的内容处置。有没有办法做到这一点?有没有办法通过预签名的 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?
4

1 回答 1

1

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

Google Cloud Storage:下载具有不同名称的文件

您还可以生成包含 response-content-disposition 查询参数的签名 URL。然后用户将发出授权请求以下载资源。

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

因此,我查看了 Ruby SDK 中的 File 对象定义,看来您可以这样做:

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

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

于 2020-05-30T00:23:51.033 回答