我正在尝试在Google Cloud Storage上获取存储桶中的对象。为此,我在其API页面上使用了Google推荐的代码:
https://cloud.google.com/storage/docs/downloading-objects#storage-download-object-php
但是当我这样做的时候,我得到了一个权限被拒绝的错误。
我为Composer配置了权限(例如,列出存储桶中的对象的代码运行良好),但我不能下载任何内容。我得到了这个错误:
警告: fopen(C:\wamp64\www\test):无法打开流:在第602行的C:\wamp64\www\test\vendor\google\cloud-storage\src\StorageObject.php中权限被拒绝
我给了自己在云存储控制台的所有权限,但仍然出现错误。
我还想知道,有没有可能在不下载的情况下获取/复制对象的内容?
谢谢你的帮助!
编辑:代码非常简单:
$storage = new StorageClient($config = [
'keyFilePath' => "[PATH OF MY KEYFILE]",
'projectId' => $projectId
]);
$bucket = $storage->bucket($bucketName);
$object = $bucket->object($objectName);
$object->downloadToFile($destination);
printf('Downloaded gs://%s/%s to %s' . PHP_EOL,
$bucketName, $objectName, basename($destination));}
在存储中,我只有一个带有对象列表的bucket,我需要获取content/dl,其中一个要与另一个Json合并
发布于 2019-06-12 01:56:38
要使单个对象公开可读,请执行以下操作:
https://cloud.google.com/storage/docs/access-control/making-data-public
验证下一个代码:
函数download_object($bucketName,$objectName,$destination)
{
$storage = new StorageClient();
$bucket = $storage->bucket($bucketName);
$object = $bucket->object($objectName);
$object->downloadToFile($destination);
printf('Downloaded gs://%s/%s to %s' . PHP_EOL,
$bucketName, $objectName, basename($destination));}
发布于 2019-06-12 06:15:36
解决方案:我无法将对象下载到PHP代码所在的文件夹之外。目标需要是目录。'/my-file.json‘
谢谢大家
https://stackoverflow.com/questions/56544576
复制相似问题