4

GoogleCloudStorageを使用するために次のリンクを使用しています。

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 / Google_REST.php(66行目)

私が間違っていることは私を助けてください。

パラメータの送信方法に問題があります。誰かが私を助けてくれることを知っているならお願いします。

ここに例があります:

しかし、それはJavaです。PHPでも同じことをするのを手伝ってください。私を助けてください。

4

3 に答える 3

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);

そしてそれは動作します..私は関数の3番目のパラメータとして渡される配列のパラメータ"data"を設定していませんでした。私は見つけて、それはうまくいきました。

于 2012-09-25T09:47:01.537 に答える
0

バケットはグローバル名前空間を共有します。オブジェクトを格納する前にバケットを作成する必要があり、「mybucket」は使用可能な名前ではありません。

https://storage.cloud.google.com/のGCSブラウザにアクセスすると、そこでバケットを作成してから、PHPコードで既存のバケットを参照できます。

于 2012-09-24T22:33:38.863 に答える
0

ここで説明されているように機能させるには、追加uploadTypeする必要がありました:https ://cloud.google.com/storage/docs/json_api/v1/objects/insert

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

dataパラメータはどこに文書化されていますか?

于 2015-06-12T14:06:25.857 に答える