【发布时间】:2016-04-09 07:55:03
【问题描述】:
很抱歉这个菜鸟问题,但这是一个我似乎无法解决的问题。我有一个 laravel 脚本可以将文件公开上传到谷歌存储桶,它工作正常。问题是我上传的对象就在存储桶内,它应该放在存储桶内的目录中。例如 bucket - /dev-bucket/ ,正确的目录 - /dev-bucket/media/ 下面是我的脚本
$client = new \Google_Client();
$credential = new \Google_Auth_AssertionCredentials(
'xxxxxx@appspot.gserviceaccount.com',
['https://www.googleapis.com/auth/devstorage.full_control'],
file_get_contents(storage_path().'xxxxx.p12')
);
$client->setAssertionCredentials($credential);
// this access control is for project owners
$ownerAccess = new \Google_Service_Storage_ObjectAccessControl();
$ownerAccess->setEntity('project-owners-' . 'xxxxxxxxxxx');
$ownerAccess->setRole('OWNER');
// this access control is for public access
$readerAccess = new \Google_Service_Storage_ObjectAccessControl();
$readerAccess->setEntity('allUsers');
$readerAccess->setRole('READER');
$storage = new \Google_Service_Storage($client);
$obj = new \Google_Service_Storage_StorageObject();
$obj->setName($stageFileName);
$obj->setAcl([$ownerAccess, $readerAccess]);
$storage->objects->insert(
Config::get('constants.bucket'),
$obj,
[
'name' => $stageFileName,
'data' => file_get_contents($stageFile),
'uploadType' => 'media',
]
);
是否有关于如何将对象放入存储桶内的目录的选项?
【问题讨论】:
标签: php laravel google-api google-cloud-storage