Как удалить файл из Firebase Storage во Flutter - PullRequest
0 голосов
/ 24 января 2020

Я попробовал пример из этого поста Как удалить файл Firebase Storage с флаттером?

Но это не сработало. Вот что я попробовал:

String filePath = 'https://firebasestorage.googleapis.com/v0/b/amct-47348.appspot.com/o/ClassificadoImages%2F1579839318515.jpg?alt=media&token=cd8880eb-8b37-45e4-8dc1-e75de0c5f7cb'
  .replaceAll(new RegExp(r 'https://firebasestorage.googleapis.com/v0/b/amct-47348.appspot.com/o/ClassificadoImages%2F'), '').split('?')[0];

FirebaseStorage.instance.ref().child(filePath).delete()
  .then((_) {
    print('Successfully deleted $filePath storage item');
  }).catchError((e) {
    print("err: $e");
  });

И вот что вернуло:

I / flutter(4920): err: PlatformException(deletion_error, Object does not exist at location., null)

Можно использовать некоторые идеи о том, почему он возвращает ошибку, так как это в точности как пример. Спасибо за чтение.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2020

Если у вас есть URL-адрес изображения, которое вы сохранили в базе данных firesbase, вы можете использовать метод

getReferenceFromUrl в ** StorageReference **.

и затем мы можем удалить его, используя ссылку.

FirebaseStorage.instance
    .getReferenceFromUrl(imageData)
    .then((reference) => reference.delete())
    .catchError((e) => print(e));
0 голосов
/ 24 января 2020

Firebase SDK принимают путь к файлу в корзине, где они хранятся. Они не берут URL или разделенный URL. Они также не принимают строки в кодировке URL. Пути должны быть простой строкой, которая использовалась для их загрузки.

Просто предположение, но если у вас есть URL для загрузки, который начинается с

https://firebasestorage.googleapis.com/v0/b/amct-47348.appspot.com/o/ClassificadoImages%2F1579839318515.jpg "

тогда путь к файлу файла, вероятно, будет

ClassificadoImages / 1579839318515.jpg

Это то, что вы должны передать FirebaseStorage.instance.ref().child() для создания ссылки для работы с ней (поскольку% 2F - закодированная версия forward sla sh в URL).

...