gpt4 book ai didi

php - 使用 google-api-php-client 下载文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:47:55 28 4
gpt4 key购买 nike

我在尝试使用位于 https://code.google.com/p/google-api-php-client/ 的 php 客户端从 Google Cloud Storage 下载文件时遇到问题

我已经验证了自己的身份,使用下面的代码我可以返回一个对象,其中包含指向我的文件的链接

$this->storageService = new Google_StorageService($this->client);
$this->objects = $this->storageService->objects;

$options = array(
'prefix' => 'REPORT_NAME_2013-07-01'
);
$bucket_contents = $this->objects->listObjects($bucket, $options);

响应类似于...

{

"kind": "storage#object",
"id": "<bucket>/<report>.csv/1001",
"selfLink": "https://www.googleapis.com/storage/v1beta2/b/<bucket>/o/<report>.csv",
"name": "<report>.csv",
"bucket": "<bucket>",
"generation": "1001",
"metageneration": "1",
"contentType": "application/csv",
"updated": "2013-07-22T10:21:08.811Z",
"size": "806",
"md5Hash": "wT01i....",
"mediaLink": "https://www.googleapis.com/storage/v1beta2/b/<bucket>/o/<report>.csv?generation=1001&alt=media",
"owner": {
"entity": "user-00b........",
"entityId": "00b490......."
},
"crc32c": "8y........",
"etag": "CPjZ.........."
}

但是我该如何使用 Google PHP 客户端下载文件...我不能使用 file_get_contents,因为它不知道身份验证细节。我发现的最好的东西是使用 Google_Client 的东西,但响应只包含元数据,没有对象/文件内容

$request = new Google_HttpRequest($object['selfLink']);
$response = $this->client->getIo()->authenticatedRequest($request);

最佳答案

老问题,但它让我找到了正确的方向。 selfLink 是元数据请求的链接,你需要mediaLink 来获取实际的对象数据,而且是getAuth 而不是getIo

此脚本将输出文件内容(前提是您已经初始化了一个 $client 对象):

$service = new Google_Service_Storage($client);
$object = $service->objects->get('bucketname', 'objectname');
$request = new Google_Http_Request($object->getMediaLink());
$response = $client->getAuth()->authenticatedRequest($request);
echo $response->getResponseBody();

关于php - 使用 google-api-php-client 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17855705/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com