Javascript Firebase storage无法使用按钮上载文件

Javascript Firebase storage无法使用按钮上载文件,javascript,Javascript,就我而言,下面的代码运行良好,这与问题代码几乎相同 var file; /////detect if file is upload///////// $("#file").on('change',function(e){ file = e.target.files[0]; }); /////function for upload to storage button when clicked/////////// function uploadFile(){ v

就我而言,下面的代码运行良好,这与问题代码几乎相同

var file;

/////detect if file is upload/////////

$("#file").on('change',function(e){
    file = e.target.files[0];       

});
/////function for upload to storage button when clicked///////////
function uploadFile(){
    var storageRef = firebase.storage().ref('/pics/'+file.name);
    var task = storageRef.put(file);

    console.log("yes");
}

您的错误是什么?“不能”不是错误消息或问题陈述。没有人能解决“不能”。请在您的问题中添加一些文字,以澄清您遇到的确切问题。有关询问高质量、有用问题的更多指导,请参阅。谢谢。@KingStone当我将storage ref和task放在onChange函数中时,它可以工作,但不在uploadFile()函数中。我只想在用户单击“提交”后保存文件。(否则,如果用户想为其个人资料选择不同的图像,他们的存储中会有许多图像)。我以前尝试过这种放置方式,但没有成功。不知怎么的,你让它起作用了。谢谢你,伙计!
<html>
<header>
  <script src="https://www.gstatic.com/firebasejs/5.6.0/firebase.js"></script>
  <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
  <script>

    var config = {
      apiKey: "                                 ",
      authDomain: "                             ",
      databaseURL: "                            ",
      projectId: "                              ",
      storageBucket: "                          ",
      messagingSenderId: "                      "
    };
    firebase.initializeApp(config);

    $(document).ready(function () {
      var file;

      $("#file").on('change', function (e) {
        file = e.target.files[0];
      });

      $('#btnUpload')
        .click(function () {
          if (file == null || file.name == null) {
            alert("Please select file");
            return;
          }
          var storageRef = firebase.storage().ref('/pics/' + file.name);
          var task = storageRef.put(file)
            .then((snapshot) => {
              console.log('Uploaded a blob or file!', snapshot);
            })
            .catch(error => {
              console.error(error)
            });
        });
    });

  </script>
</header>

<body>
  <h3>Upload File</h3>
  <div>
    <input type="file" id="file" class="form">
    <button class="btn btn-danger" id="btnUpload">Upload</button>
  </div>

</body>

</html>
var task = storageRef.put(file)
            .then((snapshot) => {
              console.log('Uploaded a blob or file!', snapshot);
            })
            .catch(error => {
              console.error(error)
            });