向 Google Cloud Firestore 上传和下载文件

2024-03-29

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

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

预先非常感谢您的答复!


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

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

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

Firebase 云 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());
    }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

向 Google Cloud Firestore 上传和下载文件 的相关文章

  • 如何在 Android Studio 中构建“发布”APK?

    我正在尝试构建一个可以上传到 Play 商店的 APK 当我在 Android Studio 版本 0 3 1 中选择 Build Generate Signed APK 时 我会被定向到有关如何在 gradle build 脚本 中正确设
  • Android - NumberPicker 滚动/快速滑动更快

    如何使数字选择器滚动 快速滑动更快 目前从00分钟到59分钟需要付出很大的努力 我尝试过一些例子Android 中 Viewpager 控制器速度减慢 https stackoverflow com questions 8155257 sl
  • 如何将TabLayout与Recyclerview同步?

    我有一个TabLayout with Recyclerview这样当单击选项卡时Recyclerview滚动到特定位置 我也想要相反的过程 这样当Recyclerview滚动到特定位置 然后该特定选项卡会突出显示 例如 如果有 4 个选项卡
  • Android/iOS 上的相机远程快门如何工作?

    我最近在 Android iOS 上遇到了一个使用蓝牙的内置相机应用程序的远程快门 这是我找到的产品的示例链接 Link http www youtube com watch v cyVG76HDvh4 不是来打广告的 只是简单了解背后的技
  • 根据自定义适配器中的条件更改特定行的背景

    我试图根据从远程服务器上的数据库收到的标志来更改行的背景颜色 在我的代码中 我创建了一个名为 disable 的 ArrayList 其中包含所有已标记的位置 我想将禁用列表中的内容与我的 ListView 中的位置相匹配 我研究了几篇帖子
  • Android BuildConfig 字段错误生成字符串

    在开始新项目的最后一天 我在构建配置中创建了一些变量 作为在发布和调试构建之间单独处理它们的好习惯 如下所示 buildTypes release minifyEnabled false buildConfigField String PA
  • NativeActivity未完成

    我从 JavaActivity 调用 NativeActivity 我的 NativeActivity 的入口点是 android main struct android app state 最后 我打电话给 ANativeActivity
  • RxJava 相当于 orElse 是什么

    在其他语言的流 函数域中有一个常见的操作 那就是 orElse 它就像一个 if 当当前链没有得到任何结果时 它会更改为备用链 在具有 Maybe 类型的语言中 它基本上会继续 Some 类型的链或更改为 None 类型的 orElse 理
  • Android XML 解析与 RSS

    我有我的 Rss 文件项目
  • ViewPager 拦截所有 x 轴 onTouch 事件。如何禁用?

    Scope 有一个包含两个片段的viewpager 其中一个片段有一个布局 用于监听 X 轴上的 onTouch 变化 Problem 当沿 X 轴触摸和滑动时 布局几乎不会获取所有 Action Move 事件 看来 viewpager
  • GCM 条款和条件

    有谁知道在哪里可以找到有关哪些内容可以通过 GCM 通知发送以及哪些内容不可以发送的条款和条件 我似乎在任何地方都找不到任何文档 当您注册开设 Google API 帐户时 您会得到这些条款和条件 https developers goog
  • 字符串包含相同的字符但仍然不同[重复]

    这个问题在这里已经有答案了 我正在尝试读取一个 txt 文件并使用每个句子作为团队的名称 同时使用该名称查找另一个 txt 文件以获取其内容 所有 txt 文件都位于我的资产文件夹的根目录中 第一个 txt 文件工作正常 我使用assetm
  • android:configChanges 清单文件中不允许错误字符串类型

    这是我的清单文件 其中显示 android configChanges 不允许的错误字符串类型 请帮助我纠正错误 下面是我的清单文件
  • BLE:使用 Android / iOS 读取长特征值

    对于正常的特征读取 仅读取 MTU 大小 20 字节 的数据 我的客户将提供更大尺寸 超过 100 字节 的特征 我看到 BLE 提供了 长读取 功能 可以读取直到达到特征的大小 https bluegiga zendesk com ent
  • 如何使用带有 ListView 和自定义适配器的选择器来指示所选项目

    我有一个具有 ListView 的活动 并且我创建了一个自定义适配器 基于BaseAdapter 自定义适配器的 GetView 方法使用自定义布局 view context LayoutInflater Inflate Resource
  • 如何在真实设备上模拟来电? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 出于测试目的 我想在真实的 Andr
  • 如何启用 Genymotion 模拟器使用主机正在使用的 WIFI 互联网

    我在 Genymotion 模拟器上运行的应用程序需要互联网 互联网似乎无法在 Genymotion 模拟器上运行 我试图通过打开浏览器来确认这一点 这就是我得到的 我在我的笔记本电脑上运行 Windows 7 并使用 Wifi 互联网 我
  • 从多个通知启动活动会覆盖之前的意图

    public static void showNotification Context ctx int value1 String title String message int value2 NotificationManager no
  • Flury 分析可以提供整数信息的平均值吗?

    我需要将 Flurry 与 Android 集成 并想知道用户将在主屏幕上停留多长时间 以分钟为单位 使用 Flurry 可以得到这样的分析吗 当我检查 Flurry 时 它为我提供了特定屏幕上点击计数的统计数据 我想知道的是用户在主屏幕上
  • 安卓应用安全

    我想开发一个用户数据非常敏感的应用程序 我是开发新手 所以不确定以下内容 技术对于安全或高效来说是必要的 请留下您的评论 提前致谢 为了额外的安全性 我们可以避开市场 游戏商店 并将应用程序安装在个人设备上 它会让它更安全吗 我必须在设备上

随机推荐