如何使用Firebase存储?

时间:2016-09-26 23:30:02

标签: android firebase firebase-storage

我正在学习firebase,Firebase存储存在一些问题:

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

2 个答案:

答案 0 :(得分:2)

问题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是一款非常强大的应用开发工具。

答案 1 :(得分:0)

转到 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

注意-> 使用allow read 允许对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/.*');
               
  }
 }
}

如果你只想写访问 删除允许读取:如果为真;