【问题标题】:POST request to google cloud storage using Curl使用 Curl 向谷歌云存储 POST 请求
【发布时间】:2018-02-23 10:47:18
【问题描述】:

在以下 Curl 命令中,将内容类型和内容长度以及访问承载附加到我的存储桶 URI 以将文件上传到谷歌云存储。

C:\softwares\curl>curl -X POST -H "Content-Type:application/json" \
    -H "Content-Length:100" \
    -H "Authorization: Bearer <MY_OAUTH2_TOKEN>" \ 
    "https://www.googleapis.com/upload/storage/v1/b/kids-74096.appspot.com/o?uploadType=media&name=newcurl" \
    -d '{"text":"something"}'

但我收到此错误:

curl: (92) HTTP/2 流 1 未完全关闭:PROTOCOL_ERROR (err 1)

【问题讨论】:

  • 你的问题是什么?
  • 格式化,改写。
  • 1) 不要公开共享 OAuth2 令牌,这可能会危及您的安全(尽管它们会在 1 小时后过期)。 2) 你有another SO question 似乎与同一主题相关。解决了吗?那样的话,能关掉吗?
  • 3) 你能澄清一下你要上传什么吗?如果你真的想使用 JSON API,你可以看看the documentation 的一些例子。但也许你也对gsutil CLI tool 或Client Libraries 感兴趣。您要上传什么类型的对象?

标签: google-cloud-storage


【解决方案1】:

确保包含 Content-Type 标头,并确保您的 Content-Length 与您发送的数据的长度相匹配。这是一个例子:

curl -k -v -X POST \
-H "Authorization: Bearer <your_oauth2_token>" -H "Content-Length: 8" \
-H "Content-Type: text/plain" \
'https://www.googleapis.com/upload/storage/v1/b/your-bucket/o?uploadType=media&name=yourobjectname' \
-d 'yourdata'

按照 cmets 中的建议,您可能会发现使用 gsutil 或 Cloud Storage client libraries 来完成此操作更容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-30
    • 2019-01-23
    • 2017-09-10
    • 2020-07-06
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    相关资源
    最近更新 更多