【问题标题】:How to restrict the content type for signed upload url for Google Storage?如何限制 Google Storage 签名上传 url 的内容类型?
【发布时间】:2020-08-04 21:00:13
【问题描述】:

我想创建一个预签名的上传 url,使客户端能够将文件直接上传到存储桶。 url 应该在五分钟后超过,防止上传大于 1mb 的文件,只允许上传 .jpg 和 .png 文件。除了文件类型限制外,我设法将所有内容放在一起。不幸的是,文档没有帮助。如何将上传的文件限制为 .jpg 或 .png 以外的文件?

policy, err := storage.GenerateSignedPostPolicyV4(keys.GetKeys().BUCKET_NAME, siteID+".png", &storage.PostPolicyV4Options{
    GoogleAccessID: conf.PrivateKeyID,
    PrivateKey:     conf.PrivateKey,
    Expires:        time.Now().Add(5 * time.Minute),
    Conditions: []storage.PostPolicyV4Condition{
        storage.ConditionContentLengthRange(0, 1<<20),
    },
})

【问题讨论】:

  • 您的意思是要阻止图片(或任何特定的内容类型)?如果是这样,那是不可能的。 Google 检查标头,但不检查数据流的内容。如果您的问题是如何防止带有标头 Content-Type 的上传,请使用 "eq", "$Content-Type", "text/plain" 来限制上传大小:"content-length-range", 0, 1000000 cloud.google.com/storage/docs/authentication/…

标签: go google-cloud-platform google-cloud-storage pre-signed-url


【解决方案1】:

只需将PostPolicyV4Options 附加到Fields

    Fields: &storage.PolicyV4Fields{
        // It MUST only be a text file.
        ContentType: "text/plain",
    },

【讨论】:

  • 问题是,您只能指定一个 ContentType。在您的情况下,它将类似于“image/*”
猜你喜欢
  • 2018-09-11
  • 2017-09-16
  • 1970-01-01
  • 2016-07-28
  • 2017-07-12
  • 1970-01-01
  • 1970-01-01
  • 2015-08-30
相关资源
最近更新 更多