拒绝通过Google Cloud Storage下载权限

时间:2019-06-11 13:13:14

标签: php download google-cloud-storage

我正在尝试在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合并

2 个答案:

答案 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'

谢谢大家