我希望此脚本将文本文件上传到我的 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);
?>