android - 向/从 Google Cloud Firestore 上传和下载文件

标签 android google-cloud-firestore

我看到 Firebase 已经发布了一个新的测试版,叫做 Cloud Firestore。在文档中,对文档的所有操作都进行了很好的描述,但是我找不到任何有关使用 Android 将媒体文件上传和下载到 Cloud Firestore 的信息...

有没有人有上传/下载媒体文件(例如 mp3 文件和图像)的任何信息/教程等?

非常感谢您的回答!

最佳答案

您不能将文件存储到 Firebase Cloud Firestore,而是可以结合使用 Firebase Storage 和 Firebase Cloud Firestore 来激活所需的功能。

Firebase Storage 用于存储文件并从中下载。

Firebase Realtime Database是在上面存储json no-sql数据库。

Firebase Cloud Firestore是Firebase实时数据库的高级版本,与Realtime数据库的区别在于它是基于文档的非sql数据库。

假设您需要开发一个包含数据库和存储的应用程序,您需要将任何数据库与 Firebase 存储结合使用。将文件存储在 firebase 存储中,并将其 url 保存在 firebase realtime 或 firebase cloud firestore 中以供下载和上传。

将文件上传到 firebase 存储:

FirebaseStorage firebaseStorage;

//for firebase storage
firebaseStorage = FirebaseStorage.getInstance();

StorageReference storageReference;
storageReference = firebaseStorage.getReferenceFromUrl("url");

final StorageReference imageFolder = storageReference.child("" + imageName);

imageFolder.putFile(saveUri).addOnSuccessListener(new OnSuccessListener < UploadTask . TaskSnapshot >() {
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
        //submitted sucessfully
        imageFolder.getDownloadUrl().addOnSuccessListener(new OnSuccessListener < Uri >() {
            @Override
            public void onSuccess(Uri uri) {

                Log.wtf(TAG, "download image path : " + uri.toString());
                //now you have path to the uploaded file save this path to your database
                uploadDataToUserUploadedImage(uri);

            }
        }).addOnFailureListener(new OnFailureListener () {
            @Override
            public void onFailure(@NonNull Exception e) {

                getMvpView().stopProgressLoading();
                getMvpView().onError("Fail to submit feedback " + e.getMessage());
                getMvpView().hideLoading();
                return;
            }
        });
    }
}).addOnProgressListener(new OnProgressListener < UploadTask . TaskSnapshot >() {
    @Override
    public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
        double progress =(100.0 * taskSnapshot.getBytesTransferred() / taskSnapshot.getTotalByteCount());
        getMvpView().publishProgress((int) progress);
        Log.d(TAG, "onProgress: " + progress);
    }
}).addOnFailureListener(new OnFailureListener () {
    @Override
    public void onFailure(@NonNull Exception e) {
        getMvpView().hideLoading();
        getMvpView().stopProgressLoading();
        getMvpView().onError("Error: " + e.getMessage());
    }
});

关于android - 向/从 Google Cloud Firestore 上传和下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49529957/

相关文章:

javascript - 如果集合不存在,如何在 firebase 中创建集合并向其中添加文档?

javascript - 触发 Firebase 函数 onUpdate 文档字段值

android - ProjectConfigurationException 如何解决这些?

android - Android 如何访问本地网页?

android - 如何在android项目中搜索方法或变量名?

javascript - Cloud Firestore 中的 'document read' 到底是什么?

firebase - Firestore 查询已删除文档的子集合

android - flutter 未定义类 'FirebaseFirestore'

android - 服务从电话上的所有 Activity 接收触摸事件?

java - 将数据传递给 onActivityResult 的问题