Как удалить файл в Firebase Storage с помощью kreait / firebase-php с учетной записью службы? - PullRequest
0 голосов
/ 05 июня 2019

У меня есть рабочая установка для Firebase Storage для проекта, а также URL-адреса файлов, которые необходимо удалить в базе данных MySQl на том же сервере. Документация не содержит макет реализации каких-либо функций delete () или remove (). Для начала мне не нужно ведро; Мне нужен отдельный объект хранения файлов для удаления. Я понимаю, что веб-URL не является точной ссылкой на файловую структуру, но мне не нужна файловая система. Я был бы очень признателен за пример удаления файла через php с URL-ссылкой.

Конечная цель - запросить все «URL-адреса файлов изображений», которые я собрал через действия пользователя, чтобы собрать ссылки на изображения определенного возраста и удалить их. Это проект Android Firebase, поэтому использование нескольких блоков с правилами жизненного цикла невозможно. Если бы я мог установить простое правило жизненного цикла независимо для одной папки, он очень легко позаботился бы об этом.

https://firebase -php.readthedocs.io / о / стабильный / storage.html

https://github.com/kreait/firebase-php

<?php
$config = parse_ini_file('/home/channel1/.config/config.ini');
require '/home/channel1/vendor/autoload.php';
use Kreait\Firebase\Factory;
use Kreait\Firebase\ServiceAccount;
$serviceAccount = ServiceAccount::fromJsonFile('/home/channel1/.config/google.json');
$firebase = (new Factory)->withServiceAccount($serviceAccount)->create();
$storage = $firebase->getStorage();
//////////////////////////////
$pdo = new PDO('mysql://hostname=localhost;dbname=' . $config['dbname'], $config['username'], $config['password'], array(PDO::ATTR_PERSISTENT => true));
$query = $pdo->query("SELECT `url` FROM `mass`");
$urls = $query->fetchAll(PDO::FETCH_NUM);
foreach ($urls as $row) {
  $storage->getBucket($row[0])->delete();
}

Неустранимая ошибка: Uncaught Google \ Cloud \ Core \ Exception \ BadRequestException: {"error": {"errors": [{"domain": "global", "reason": "invalid", "message": " Неверное имя корзины: 'https://firebasestorage.googleapis.com/v0/b/channel-19.appspot.com/o/mass%2F1...'"}], "код": 400, "message": "Неверное имя корзины:' https://firebasestorage.googleapis.com/v0/b/channel-19.appspot.com/o/mass%2F1...'"}} в / home / channel1 / vendor / google / cloud- core / src / RequestWrapper.php: 362 Трассировка стека: # 0 /home/channel1/vendor/google/cloud-core/src/RequestWrapper.php(206): Google \ Cloud \ Core \ RequestWrapper-> convertToGoogleException (объект (GuzzleHttp \ Exception \ ClientException)) # 1 /home/channel1/vendor/google/cloud-core/src/RestTrait.php(95): Google \ Cloud \ Core \ RequestWrapper-> send (Object (GuzzleHttp \ Psr7 \ Request), Array) # 2 /home/channel1/vendor/google/cloud-storage/src/Connection/Rest.php(124): Google \ Cloud \ Storage \ Connection \ Rest-> send ('buckets', 'delete', Array ) # 3 /home/channel1/vendor/google/cloud-storage/src/Bucket.php (в /home/channel1/vendor/google/cloud-core/src/RequestWrapper.php в строке 362

...