无法使用谷歌API将对象上传到谷歌云存储

时间:2012-09-24 10:09:50

标签: php google-cloud-storage

我使用以下链接来使用Google云端存储:

Google CLoud

我想使用上面API中给出的插入函数上传一个对象。我正在使用PHP。我使用的代码如下:

$StorageService = new Google_StorageService($client);
$objects = $StorageService->objects;
$gso = new Google_StorageObject();
$gso->setName('myobj');
$postbody = array(file_get_contents('buc.jpg'));
$resp = $objects->insert('mybucket', $gso, $postbody);

但我得错误为:

致命错误:未捕获的异常'Google_ServiceException',消息'错误调用POST https://www.googleapis.com/storage/v1beta1/b/mybucket/o :( 400)必需'在/ home / www / public_html / abc / google-api-php-client / src / io /第66行的Google_REST.php

我做错了什么,请帮帮我..

我发送参数的方式存在一些问题。如果有人知道帮帮我..

这里有一个例子:

Example

但那是在Java中请帮我在PHP中做同样的事情。请帮帮我。

3 个答案:

答案 0 :(得分:4)

我想出了答案。要使用的代码如下:

$objects = $StorageService->objects;
$postbody = array('data' => file_get_contents('buc.jpg'));
$gso = new Google_StorageObject();
$gso->setName('mybuc');
$resp = $objects->insert('mybucket', $gso ,$postbody);
print_r($resp);

然后它的工作.. 我没有在数组中设置参数“data”作为函数的第三个参数传递。我发现它确实有效。

答案 1 :(得分:0)

Buckets共享一个全局命名空间。您必须在将对象存储在其中之前创建存储桶,并且“mybucket”不是可用名称。

如果您转到https://storage.cloud.google.com/的GCS浏览器,则可以在那里创建存储桶,然后引用PHP代码中的现有存储桶。

答案 2 :(得分:0)

我必须添加uploadType才能让它按照此处的说明运行:https://cloud.google.com/storage/docs/json_api/v1/objects/insert

$postbody = array('uploadType' => 'media', 'data' => file_get_contents('buc.jpg'));

记录data参数在哪里?