我正在尝试在Google Cloud Storage的存储桶中放置对象。 为此,我在Google的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中的权限被拒绝
我向自己授予了在Cloud Storage控制台中的所有权限,但错误仍然出现。
我还想知道,是否可以不下载而获取/复制对象的内容?
谢谢您的帮助!
编辑:代码非常简单:
$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));
}
在存储中,我只有一个带有对象列表的存储桶,我需要获取其中的content / dl才能将其与另一个Json合并
答案 0 :(得分:0)
要使各个对象公开可读:
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));
}
答案 1 :(得分:0)
[解决方案]我无法将对象下载到PHP代码所在的文件夹之外。 目的地必须为 DIR 。 '/my-file.json'
谢谢大家