如何使用flutter在Firebase中设置字节数据?

All*_*nzi 6 firebase flutter google-cloud-firestore

Cloud FireStore支持Bytes数据类型,但是未能给出如何设置它的示例,我试图在Flutter中将缩略图作为字节上传到FireStore。有人可以举一个例子怎么做吗?

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

编辑 我认为Richard Heap和Jay Vasan发布的两个答案都可以使用blobbase64Encode实际上在FireStore的key下使用或赋予相同的值thumbnailPhoto。我决定悬赏Richard,因为它隐藏了内部二进制编码的细节。

Ric*_*eap 6

Cloud Firestore原始字节由BlobDart 表示,因此请使用:

    .setData({'thumbnailPhoto', Blob(await file.readAsBytes())});
Run Code Online (Sandbox Code Playgroud)

从Cloud Firestore读回此内容时,您会获得一个Blob。使用访问其字节blob.bytes。例如,要写入文件,请使用:

  await file.writeAsBytes(theBlob.bytes); // overwrite or create the file
Run Code Online (Sandbox Code Playgroud)