PHP Base64 загрузка изображения строки не работает с Google\Cloud\Storage\StorageClient; используя GOOGLE STORAGE BUCKET

Мне нужно загрузить изображение из мобильного приложения, чтобы у нас был API, который берет строковое изображение base64 и загружает его на сервер. Он работает нормально на нашем текущем сервере, но теперь мы переходим на Google Cloud, поэтому он не работает

Когда я захожу на изображение из браузера, оно показывает ошибку, мне нужно решение в коде PHP

Я уже разместил код для этого

/* working fine in current server */            
$file = $DIR.$imagename;
$ifp = fopen($file, "wb"); 
$data = explode(',', $base64img);
fwrite($ifp, base64_decode($data[1])); 
fclose($ifp);


/* Now i have changed above current server code for Gcloud as following */
$storage = new StorageClient([
    'projectId' => getenv("PROJECT_ID"),
]);
$bucket = $storage->bucket(getenv("GOOGLE_STORAGE_BUCKET"));

$object = $bucket->upload(file_get_contents(base64_decode($data[1])), [
    'name' => $file,
    'predefinedAcl' => 'publicRead',
]);

Теперь, когда я захожу на URL изображения из браузера, он показывает следующий ответ и файл не загружается в gcloud, все разрешения уже даны

URL: https://storage.googleapis.com/mydomain.appspot.com/uploads/users/111111/docs/12241/92ddc8390754da02b4e8d34d6a33680.jpg

Отображение следующей ошибки:

<Error>
    <Code>AccessDenied</Code>
    <Message>Access denied.</Message>
    <Details>Anonymous caller does not have storage.objects.get access to mydomain.appspot.com/uploads/users/111111/docs/12241/92ddc8390754da02b4e8d34d6a33680d.jpg.</Details>
</Error>

0 ответов

Другие вопросы по тегам