web - Firebase 存储网站 : How to upload a file

标签 web firebase firebase-storage

我在我的网站上添加了以下功能。我正在使用 Firebase 存储,但由于某种原因,它似乎不起作用,我不知道为什么。

当您上传文件时,进度条应显示将文件保存/上传到 Firebase Storage 的进度,但事实并非如此。 Firebase 已初始化,我知道它可以工作。

如果有人可以帮助我并告诉我为什么该功能无法按上述方式工作以及如何修复它,我将不胜感激。

function AddMed() {
        var uploader = document.getElementById("uploader");
    var fileButton = document.getElementById("fileButton");
    var email = sessionStorage.getItem("email");
  //Listen for file selection

    fileButton.addEventListener('change', function (e) {
    // Get File 
        var file = e.target.files[0];
    //Create a storage ref

        var storageRef = firebase.storage().ref('file/' + file.name);
    /** folder name will be email, 
    Will have to transfer variable from page to page and files will be .jpeg**/
    //Upload file 

        var task = storageRef.put(file);
    //Update progress bar

        task.on('state_changed',
                function progress(snapshot) {
                var percentage = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
                uploader.value = percentage;
            },
            function complete() {

                    });
    });

}

最佳答案

  • 先更改安全规则


  • service firebase.storage {
      match /b/{bucket}/o {
        match /{allPaths=**} {
          allow read, write: if request.auth == null;
        }
      }
    }


  • 创建文件


  • <!DOCTYPE html>
    <html>
    <head>
    	<title>Firebase Web Basics</title>
    
    	<link href="https://fonts.googleapis.com/css?family=Raleway:300,400,500,700" rel="stylesheet">
    
    	<script src="https://use.fontawesome.com/939e9dd52c.js"></script>
    
    	<link rel="stylesheet" type="text/css" href="style.css">
    </head>
    <body>
    
    	<div class="mainDiv" align="right">
    		<h1 align="left">Firebase File Upload</h1>
    		<progress id="uploader" value="0" max="100">0%</progress>
    		<input type="file" id="fileButton" value="upload"/>
    	</div>
    
    
    
    <script src="https://www.gstatic.com/firebasejs/3.7.4/firebase.js"></script>
    <script>
      // Initialize Firebase
      var config = {
        apiKey: "******************************",
        authDomain: "******************************",
        databaseURL: "******************************",
        storageBucket: "******************************",
        messagingSenderId: "******************************"
      };
      firebase.initializeApp(config);
      //-------------------------------------
      
      var uploader = document.getElementById('uploader');
      var fileButton =         document.getElementById('fileButton');
      fileButton.addEventListener('change', function(e){
      var file = e.target.files[0];
      var storageRef = firebase.storage().ref('img/'+file.name);
      var task = storageRef.put(file);
      task.on('state_changed', function progress(snapshot) {
        var percentage = (snapshot.bytesTransferred/snapshot.totalBytes)*100;
        uploader.value = percentage;
    
      }, function error(err) {
    
    
      },function complete() {
    
      });
    });  
      
      
    </script>
    
    <script src="fileup.js">
    </script>
    </body>
    </html>

    关于web - Firebase 存储网站 : How to upload a file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41304405/

    相关文章:

    php - 一个简单的 php/mysql 网站的布局

    linux - 有 C#/MVC3 的真正开源替代品吗?

    android - 使用 Firebase 映射 adClick --> appInstallation

    android - 有没有办法使用 Firebase App Distribution 为每个 Android 构建变体配置单独的 serviceCredentialsFile?

    javascript - React Native Expo 如何使用 expo 图像选择器将图像上传到 Firebase

    javascript - 尝试将图像上传到 firebase 存储但不断收到错误 : Cannot read property 'name' of undefined

    ruby-on-rails - 尽管将属性列入白名单,但仍存在不允许的参数rails 4

    jquery - 在变量上使用 jQuery 而不是在 DOM 上?

    ios - 标记帖子时从 firebase 中删除一个 child

    firebase - 无法将图像从 RPI 3 上传到 Firebase 存储