【问题标题】:cannot read property '0' of undefined 9无法读取未定义 9 的属性“0”
【发布时间】:2019-03-22 16:34:04
【问题描述】:

这是我收到错误的文本。该代码位于函数 sendData() 之后。它的开头是:

var file = this.files[0]; 

我想设置按钮将文件发送到存储的位置,而不是在它检测到状态已更改时

var database = firebase.database();
var uploader = document.getElementById("uploader");
var fileButton = document.getElementById("fileButton").value;
var title = document.getElementById("title").value;
var description = document.getElementById("description").value;
var d = new Date();
var month = d.getMonth();
var day = d.getDay();
var hour = d.getHours();
var minute = d.getMinutes();

firebase.auth().onAuthStateChanged(function(user) {
    if(user) {
        var currentUser = document.getElementById('currentUser').href = "#";
        var currentUser = document.getElementById('currentUser').innerHTML = "Cuenta";
    } else {
        var currentUser = document.getElementById('currentUser').href = "/auth/login.html";
        var currentUser = document.getElementById('currentUser').innerHTML = "Inicio De Sesión";
        window.location.href = "/auth/login.html";
    }
});

function sendData() {
    var file = this.files[0];
    var storage = firebase.storage().ref("News/" + file.name);
    var task = storage.put(file);
    task.on('state_changed', function(snapshot) {
        var percentage = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
        uploader.value = percentage;
    }, function error(err) {
        console.log("Error: " + err);
        alert("Error");
    }, function() {
        firebase.storage().ref("News/").child(file.name).getDownloadURL().then(function(url) {
            var title = document.getElementById("title").value;
            var description = document.getElementById("description").value;
            var ref = database.ref("News");
            var data = {
                imageURL: url,
                Title: title,
                Description: description,
                Date: month + "/" + day + " " + h + ":" + minutes
            }
            ref.push(data);
        });
    });
};

HTML:代码

<div class="mainContainer">
      <h1>Database</h1>
      <input id="title" placeholder="Título" type="text">
      <textarea id="description" placeholder="Description"></textarea>
      <br>
      <progress id="uploader" value="0" max="100">
      0%
      </progress>
      <br>
      <input type="file" value="upload" id="fileButton" accept=".png, .mp4, .mp3, .pdf">
      <button onclick="sendData()">Enviar</button>
    </div>

【问题讨论】:

  • 你试过调试代码吗?这个脚本的目的是什么?
  • 此错误表示该行未定义“this.files”。你有什么理由期望它在那里定义吗?你从哪里得到文件名?

标签: firebase storage


【解决方案1】:

可能this.files 未定义,您正在尝试访问索引0 处的元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多