从Google Cloud Firestore上载和下载文件

时间:2018-03-28 08:46:45

标签: android google-cloud-firestore

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

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

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

1 个答案:

答案 0 :(得分:8)

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

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

Firebase实时数据库是在其上存储json no-sql数据库。

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

假设您需要使用数据库和存储开发应用程序,则需要将任何数据库与Firebase存储相结合。将文件存储在firebase存储中,并将其保存在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());
                }
            });