【问题标题】:Uploading and downloading files to/from Google Cloud Firestore向/从 Google Cloud Firestore 上传和下载文件
【发布时间】:2018-03-28 08:46:45
【问题描述】:

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

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

提前非常感谢您的回答!

【问题讨论】:

  • 您无法将文件上传到 Cloud Firestore,它是非 sql 数据库。对于存储,请使用 Firebase 存储。
  • 你的意思是上传和下载的firebase存储。
  • 您的意思是可以选择同时使用文件(数据)的 cloud firestore 而不是 firebase 实时数据库和文件的 firebase 存储?

标签: android google-cloud-firestore


【解决方案1】:

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

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

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

Firebase Cloud Firestore是Firebase实时数据库的高级版本,与实时数据库的区别在于它是基于文档的非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());
    }
});

【讨论】:

猜你喜欢
  • 2019-06-21
  • 2018-10-14
  • 2017-11-08
  • 1970-01-01
  • 2020-09-25
  • 2021-05-13
  • 2016-02-03
  • 2012-10-18
  • 1970-01-01
相关资源
最近更新 更多