Как установить байты данных в FireBase, используя флаттер? - PullRequest
2 голосов
/ 20 октября 2019

Cloud FireStore поддерживает тип данных Bytes, но не смог привести пример того, как его настроить, я пытаюсь загрузить миниатюрное изображение в виде байтов в FireStore во Flutter. Может кто-нибудь привести пример, как это сделать?

File imageFile;
final databaseReference = Firestore.instance;
    await databaseReference
        .collection("Users")
        .document('${user.strId}')
        .setData({'thumbnailPhoto': ???}); // how to convert imageFile to Bytes?

РЕДАКТИРОВАТЬ Я думаю, что оба ответа, опубликованные Ричардом Хипом и Джеем Васаном, работают, используя blob или base64Encode на самом делеукажите то же значение в FireStore под ключом thumbnailPhoto. Я решил передать награду Ричарду, поскольку он скрывает детали внутреннего двоичного кодирования.

Ответы [ 2 ]

3 голосов
/ 11 ноября 2019

Необработанные байты Cloud Firestore представлены Blob в Dart, поэтому используйте:

    .setData({'thumbnailPhoto', Blob(await file.readAsBytes())});

Когда вы прочитаете это обратно из Cloud Firestore, вы получите Blob. Получите доступ к его байтам с помощью blob.bytes. Например, для записи в файл используйте:

  await file.writeAsBytes(theBlob.bytes); // overwrite or create the file
0 голосов
/ 11 ноября 2019

В этом случае вы можете преобразовать изображение в строку base64.

открыть изображение как:

var imageFile = File(imagePath);

преобразовать в base64:

String base64Image = base64Encode(imageFile.readAsBytesSync());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...