【问题标题】:HTML Javascript File UploadHTML Javascript 文件上传
【发布时间】:2016-04-05 17:00:17
【问题描述】:

我有以下带有文件的 HTML 对象

  <form name='file_form' class="panel-body">
    <input type="file" id="file" name="file[]" />
    <input type='button' id='btnSendFile' value='sendFile' />
    <output id="list"></output>
  </form>

在使用 type="file" 中的文件浏览时,我选择要上传的文件。当我单击 btnSendFile 时,所选文件的文件名出现在名称下。但是,当我在下面传递文件变量时,它为空。我需要访问文件对象的文件对象属性。

我有一个发送文件的函数。

var file ;

function sendFile(file) {
var to = $('#to').get(0).value;
var filename = file.name;
var filesize = file.size;
var mime = file.type;

}

$('#btnSendFile').bind('click', function() {
 sendFile(file);
});

如何在需要file.name、file.size 和file.type 的javascript 中获取文件对象?我应该分配什么变量文件?

更新: 答案:

file= $("#file")[0].files[0];

【问题讨论】:

  • 你在哪里调用sendFile
  • @RayonDabre 看到上面的功能我刚刚更新了..
  • 你没有在sendFile();中传递任何参数
  • @RayonDabre 我想知道如何将刚刚上传的文件作为文件对象链接到文件变量,并显示三个属性(.name、.size 和 .type)。
  • 文件上传到服务器了吗?

标签: javascript html file upload


【解决方案1】:

this.previousElementSibling.files[0]$("#file")[0].files[0] 传递给sendFile

// var file;

function sendFile(file) {
  // var to = $('#to').get(0).value;
  var filename = file.name;
  var filesize = file.size;
  var mime = file.type;
  $("#list").html(filename + " " + filesize + " " + mime)
}

$("#btnSendFile").bind("click", function() {
  sendFile(this.previousElementSibling.files[0]);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<form name='file_form' class="panel-body">
  <input type="file" id="file" name="file[]" />
  <input type='button' id='btnSendFile' value='sendFile' />
  <output id="list"></output>
</form>

【讨论】:

  • 谢谢。我只需要将 $("#file")[0].files[0] 传递给 sendFile.
【解决方案2】:

你好,这是你的答案

 <form name='file_form' class="panel-body">
        <input type="file" id="file" name="file[]"/>
        <input type='button' id='btnSendFile' value='sendFile' onclick="myFunction()" />
        <output id="list"></output>
      </form>

    <script>
    function myFunction(){
        var x = document.getElementById("file");
    var txt = "";

                var file = x.files[0];
                if ('name' in file) {
                    txt += "name: " + file.name + "<br>";
                }
                if ('size' in file) {
                    txt += "size: " + file.size + " bytes <br>";
                }
    document.getElementById ("list").innerHTML = txt;
    }
    </script>

【讨论】:

  • 为什么要使用多个?
  • 我在您的代码中看到 name="file[]" 所以我认为您需要上传超过 1 个文件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-24
  • 2016-05-01
  • 2011-08-01
  • 2016-04-12
  • 1970-01-01
相关资源
最近更新 更多