从Google Cloud Firestore上载和下载文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Google Cloud Firestore上载和下载文件相关的知识,希望对你有一定的参考价值。

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

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

非常感谢您提前获得答案!

答案

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

Firebase存储是存储文件并从中下载。

Firebase实时数据库是为了存储json no-sql数据库。

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

假设您需要使用数据库和存储开发应用程序,则需要将任何数据库与Firebase存储相结合。将文件存储在firebase存储中,并将其URL保存在firebase实时或firebase云存储中,以便下载和上载它们。

要在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());
                }
            });

以上是关于从Google Cloud Firestore上载和下载文件的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Python 运行时云函数访问 Google Cloud Platform Firestore 触发器

限制通过VPC网络访问Google Cloud Firestore。

Google Cloud Firestore 与 Google Cloud Spanner 的区别?

导出 Firestore 备份数据的云功能。使用 firebase-admin 或 @google-cloud/firestore?

使用 firebase_admin 或 google.cloud.firestore 在 python 中的 Firestore 客户端(作为用户)

Google Firestore 是 Google Cloud Datastore 的子集还是超集?