Jquery input.files equivalent

2020-02-05 01:14发布

I have a simple html form with a single file upload input. (jsfiddle)

In the past, I have accessed the file selected by the user using input.files, however I am at a loss as to how to do this with JQuery;

Code:

$(function () {
    $("#cmdSubmit").bind("click", function () {
        var file = document.getElementById("fileInput").files[0];
        alert(file); //A

        file = $("#fileInput").val();
        alert(file); //B

        file = $("#fileInput").files[0];
        alert(file); //C

    });        
});​

Option A give me what I expect, a file object. However, option B simply gives me the name of the uploaded file, and (as far as I can tell) not the file itself.

Option C shows that files is undefined.

What is the Jquery equivalent of input.files?

Note: I have no objection to using native javascript; but given that I am using JQuery throughout the rest of this project I'd prefer to use it here as well if possible.

4条回答
再贱就再见
2楼-- · 2020-02-05 01:54
$(function () {
    $("#cmdSubmit").bind("click", function () {
       alert(this.files);
     });        
});​
查看更多
我欲成王,谁敢阻挡
3楼-- · 2020-02-05 02:02

jQuery doesn't provide a wrapper for the Files API. So there isn't a jQuery style way to do this, at least not built into the jQuery core.

Your options:

  • stick with option A
  • wait for jQuery to include such a wrapper (they might not)
  • find an extension written by someone else (if one exists)
  • write an extension yourself
查看更多
对你真心纯属浪费
4楼-- · 2020-02-05 02:05

You have to access the element. Try:

file = $("#fileInput")[0].files[0];
alert(file); //C

or (thank you Jack)

file = $("#fileInput").prop('files')[0];
alert(file);

Fiddle

查看更多
beautiful°
5楼-- · 2020-02-05 02:10

Try the below code

var file = $("#fileInput").get(0).files[0];
 alert(file);

Thanks

查看更多
登录 后发表回答