0

我希望此脚本将文本文件上传到我的 Google 云存储帐户中的存储桶。我正在使用 PHP 客户端库,特别是 objects.insert 方法。在我实际调用 insert 方法之前,该脚本似乎可以正常工作(如果我取消该行,那么我至少可以看到 var_dump 的结果)。如果我调用该方法,我会收到 HTTP 500 - 内部服务器错误(并且该文件不会进入我的云存储帐户)。

需要注意的一些事项:

  • 此脚本适用于服务帐户
  • 文本文件与此脚本位于同一文件夹中

我认为我调用插入的方式有问题,但我无法弄清楚。对于如何使该脚本正常工作以便上传文本文件的任何建议,我将不胜感激。

这是代码:

<?php
    require_once 'lib/src/Google_Client.php'; 
    require_once 'lib/src/contrib/Google_StorageService.php';

    define("CLIENT_ID", "MY-CLIENT-ID");
    define("SERVICE_ACCOUNT_NAME", "MY-SERVICE-ACCOUNT-NAME");

    define("KEY_FILE", "/path/to/privatekey.p12");

    $client = new Google_Client();
    $client->setApplicationName("Google Cloud Storage Test Connection");

    session_start();
    if (isset($_SESSION['token'])) {
        $client->setAccessToken($_SESSION['token']);
    }

    // Load the key in PKCS 12 format (you need to download this from the
    // Google API Console when the service account was created.
    $key = file_get_contents(KEY_FILE);
    $client->setAssertionCredentials(new Google_AssertionCredentials(
        SERVICE_ACCOUNT_NAME,
        array('https://www.googleapis.com/auth/devstorage.read_write'),
        $key)
    );

    $client->setClientId(CLIENT_ID);

    //Define Storage Service
    $storageService = new Google_StorageService($client);
    $objects = $storageService -> objects;

    //Define Storage Object
    $gso = new Google_StorageObject ();
    $gso-> setName('myObj');

    //Define Storage Object Media
    $gsoMedia = new Google_StorageObjectMedia ();
    $gsoMedia-> setContentType('text/plain');
    $gsoMedia-> setData(file_get_contents('Test.txt'));

    //Link Storage Object Media to Storage Object
    $gso-> setMedia($gsoMedia);

    //Upload to Cloud Storage
    $result = $objects->insert(/*MY_BUCKET*/,  $gso);

    var_dump($gso);

?>
4

0 回答 0