【发布时间】:2016-05-18 23:48:39
【问题描述】:
我能够将文件匿名上传到我的谷歌云存储桶,但无法使用策略和签名从 HTML 页面进行上传。
我花了很多时间阅读了几篇文章:
我还尝试按照他们的文档中描述的 HTML POST 的 Google 文档进行操作。无法发布链接,因为我只有 1 个信誉点...
My Policy Document 是一个简单的 JSON 格式,与 google 文档中的示例非常相似。
{“过期”:“2020-06-16T11:11:11Z”,
“条件”:[
["开始于", "$key", "" ],
{"acl": "bucket-owner-read" },
{"bucket": "XXXXXXXXX"},
{"success_action_redirect": "在此处重定向网址...由于我的声誉,我不得不将其删除..." },
["eq", "$Content-Type", "application/pdf" ],
[“内容长度范围”, 0, 1000000]
]
}
XX 只是编辑。
而且,我正在使用以下 HTML:
为方便显示,策略和签名字符串已被截断。
<form action="http://storage.googleapis.com/flashbidz_uploads/"
method="post" enctype="multipart/form-data">
<input type="text" name="key" value="">
<input type="hidden" name="bucket" value="XXXXX">
<input type="hidden" name="Content-Type" value="application/pdf">
<input type="hidden" name="GoogleAccessId" value="XXXXX@appspot.gserviceaccount.com">
<input type="hidden" name="acl" value="bucket-owner-read">
<input type="hidden" name="success_action_redirect" value="https://flashbidz.appspot.com/#/sellerhome">
<input type="hidden" name="policy" value="eyJleHBpcm...XQ0KfQ==">
<input type="hidden" name="signature" value="5P5lFuZ...nkTlyY=">
<input name="file" type="file">
<input type="submit" value="Upload">
</form>
当我运行它时,我会收到以下消息: 我们计算的请求签名与您提供的签名不匹配。检查您的 Google 密钥和签名方法。
我遵循的过程是从该站点 here 创建我的策略的 base64 表示,然后使用该站点 here 创建 SHA-256 签名字符串(使用 HTML 中的 Base64 表示)并签名使用我的服务帐户密钥的 private_key_id。
我还使用了电子邮件形式的密钥签名和与服务帐户关联的客户端 ID。
我不知道哪里出错了,也不知道如何调试它。任何帮助将不胜感激,我明白已经有很多关于这个主题的帖子。我都读过(可能没看懂)。
谢谢!
【问题讨论】: