错误400 - Google Storage上的“必填”

时间:2018-02-13 11:33:26

标签: php curl google-cloud-platform google-cloud-storage

我遇到了Google云端存储API问题。我正在使用curl,但我得到400这样的错误:

  

{“error”:{“errors”:[{“domain”:“global”,“reason”:“required”,“message”:“Required”}],“code”:400,“message” :“必需”}}

不幸的是,我找不到解决方案,因为在互联网上没有像“必需”的错误。

这是我的PHP代码:

$GOOGLE_API_KEY = "My-API-Key";

$url = "https://www.googleapis.com/upload/storage/v1/b/img.artphototravel.com/o?key=".$GOOGLE_API_KEY;

$curl = curl_init();
curl_setopt_array($curl, array(
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTP_VERSION   => CURL_HTTP_VERSION_1_1,
  CURLOPT_URL            => $url,
  CURLOPT_POST           => true,
  CURLOPT_POSTFIELDS     => array(
    "uploadType"    => "media",
    "name"          => "test.jpg"
  )
));

//Headers
$headers = array();
$headers[] = "Content-Type: image/jpeg";
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

$resp = curl_exec($curl);
curl_close($curl);

任何人都可以帮助我找出解决方案吗?非常感谢你。

2 个答案:

答案 0 :(得分:0)

uploadType不是帖子字段,它是一个像key这样的网址查询参数。此外,您不想使用CURLOPT_POSTFIELDS。这意味着您要上传表单数据,而media uploadType是您直接上传数据的上传类型,而不提供单独的元数据部分。

答案 1 :(得分:0)

添加@Brandon提到的内容,uploadType + name应该包含在URL中。此外,您应该使用Authorization:Bearer,Content-type作为标题。不是PHP专家,但在创建请求时,这些sample REST API可能会很有用。

curl -X POST --data-binary @[OBJECT] \
    -H "Authorization: Bearer [OAUTH2_TOKEN]" \
    -H "Content-Type: [OBJECT_CONTENT_TYPE]" \
    "https://www.googleapis.com/upload/storage/v1/b/[BUCKET_NAME]/o?uploadType=media&name=[OBJECT_NAME]"

另外,您是否已查看过Cloud Storage PHP库。这是link。祝你好运