【问题标题】:How to use Firebase Storage?如何使用 Firebase 存储?
【发布时间】:2016-09-26 23:30:02
【问题描述】:

我正在学习 firebase,但有一些关于 Firebase 存储的问题:

  • 我可以使用的总文件大小的限制?
  • 我想使用 firebase 数据存储上传使用头像,然后使用该 url 将图像加载到带有 glide 或 picasso 的 imageview。有可能吗?
  • 我想使用我的应用和 firebase 身份验证来使用登录、firebase 消息推送通知、firebase 数据库来保存一些小数据、firebase 分析和数据库存储。但是我的帐户是免费的。如何计算当前访问并发数? (我想无限地解决它)如果我使用多个firebase number并发访问的服务,它会创建吗?

【问题讨论】:

    标签: android firebase firebase-storage


    【解决方案1】:

    问题 1:

    每个文件 5 TB,当然也受您当前计划的限制。

    https://stackoverflow.com/a/37971182/2254886 https://cloud.google.com/storage/docs/json_api/v1/how-tos/upload

    这是限制它的一种方法: https://stackoverflow.com/a/38427527/2254886

    问题 2:

    是的,您可以在存储桶中存储和检索数据。您可以轻松地以编程方式获取 URL(公共或私有,您的选择)。

    问题 3(嗯,问题很多):

    https://firebase.google.com/pricing/

    您可以使用该计算器查看您需要的计划,具体取决于您的估计使用情况。此外,您可以在控制台中查看包含用户数量的所有分析。您可以在该控制台中找到数量惊人的信息。

    您可以看到,您所有问题的答案已经在 SO 上。我鼓励您通读 https://firebase.google.com 上的文档,也可以前往 Firebase YouTube 频道 (https://www.youtube.com/user/Firebase)。你可以在那里学习你需要知道的一切。 Firebase 是一款非常强大的应用开发工具。

    【讨论】:

    • 嗨,@Ryan。我有更多问题(我使用免费帐户) 问题 1:5TB/文件很大,是免费会员吗?但是所有文件的总和是无限的?问题 3:据我所知,使用 FCM 我有 100 个当前访问并发,这意味着如果只有 100 个用户使用我的应用程序可以同时使用应用程序吗?数字用户将随着我使用更多服务作为数据库、存储、分析而减少?
    • 你好@phongvan。是的,每个文件 5TB 比免费帐户甚至可以存储的要大,所以这应该不是问题。至于 100 个并发用户,这个限制是针对数据库连接的。在无限计划中,它是 10,000。存储和数据库连接的 100 个用户不应该减少,我相信只有数据库。
    • 这是我的荣幸。
    【解决方案2】:

    转到 Firebase 控制台 -> 存储 -> 允许测试模式(如果你想读写) 创建一个反应应用程序

    • 创建文件 firebase/firebase.utils.js

       import firebase from 'firebase/app'
       import 'firebase/storage'
      
       // copy config from firebase web app project
       const config={
       apiKey: "your api key",
       authDomain: "auth domain",
       projectId: "web app name",
       storageBucket: "storage bucket",
       messagingSenderId: "sender ID",
       appId: "app id",
       measurementId: "measure id"
       };
      
       export const app=firebase.initializeApp(config)
       export default firebase;
      
    • 转到 App.js

       import {app} from './firebase/firebase.utils.js'
       function App() {
       const onChange = (e) => {
       const file = e.target.files[0];
       const storageRef = app.storage().ref()
       const fileRef = storageRef.child(file.name)
       fileRef.put(file).then(() => {
        console.log("Uploaded a file")
      })
      }
      
       return (
      
       <input type="file" onChange={onChange}/>
      
      );
      }
      
      export default App;
      

    如果您想要下载指向 firebase 文件的链接,请对 onChange 应用以下更改

    注意-> 使用允许读取允许对 Firebase 存储的读取访问:如果为真;

     const onChange = (e) => {
     const file = e.target.files[0];
     const storageRef = app.storage().ref()
     const fileRef = storageRef.child(file.name)
     fileRef.put(file).then(() => {
      fileRef.getDownloadURL().then(function (url) {
                console.log(url);
               
     });
       console.log("Uploaded a file")
      })
    }
    

    规则

    如果您想限制上传到 Firebase 的大小,请转到存储下的规则并使用以下规则:
    //此规则将允许上传任何最大 10mb 的文件

    rules_version = '2';
    service firebase.storage {
      match /b/{bucket}/o {
        match /{allPaths=**} {
          allow read: if true;
          allow write: if request.resource.size < 10 * 1024 * 1024;
                       
        }
      }
    }
    

    如果您只想允许图片

      rules_version = '2';
      service firebase.storage {
      match /b/{bucket}/o {
      match /{allPaths=**} {
      allow read: if true;
      allow write: if request.resource.size < 10 * 1024 * 1024
               && request.resource.contentType.matches('image/.*');
                   
      }
     }
    }
    

    如果你只想要写权限 删除允许读取:如果为真;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-19
      • 1970-01-01
      • 2020-08-08
      • 2016-11-23
      • 2019-04-16
      • 2021-08-31
      • 2020-10-18
      • 2021-07-13
      相关资源
      最近更新 更多