如何使用google-cloud / storage签名的政策上传数据?

时间:2018-02-06 05:03:10

标签: node.js google-cloud-storage axios

  

REF:   https://cloud.google.com/nodejs/docs/reference/storage/1.5.x/File#getSignedPolicy

我正在尝试使用已签名的政策将文件上传到我的存储桶。使用文档中的示例,我从我的桶对象获得了3个项目的响应。

"policyString": "{\"expiration\":\"2019-10-18\",\"conditions\":[[\"eq\",\"$key\",\"image.jpg\"],{\"bucket\":\"my-bucket\"},[\"eq\",\"$Content-Type\",\"image/jpeg\"],[\"content-length-range\",0,1024]]}",
"policyBase64": "[some-long-string]",
"policySignature": "[some-long-string]"

在文档中,它还向您展示了如何使用curl上传对象。

  

REF:   https://cloud.google.com/storage/docs/object-basics#upload-object-json

如何将我作为签名政策和上传api

收回的内容组合在一起

https://www.googleapis.com/upload/storage/v1/b/[BUCKET_NAME]/o?uploadType=media&name=[OBJECT_NAME]

使用axios将文件上传到我的存储桶?是否还要附加其他标题?

这是我采取的做法,但我不确定。

const options = {
  headers: {
     'Authorization': ?
     'Content-Type': file.type
  }
}
axios.put(concatenatedPolicySignatureUrl, file, options)
  .then(response => {
      console.log('success!');
  }

1 个答案:

答案 0 :(得分:5)

签名的策略字符串仅适用于XML API,这意味着POST到app.component.ts(而不是https://storage.googleapis.com/bucket/object)。

有关如何生成和使用政策的详细信息,请参阅https://cloud.google.com/storage/docs/xml-api/post-object#policydocument

下面是设置允许用户使用策略字符串上传对象的HTTP表单的示例,尽管您也可以通过JavaScript触发等效的POST请求:

www.googleapis.com/upload