27

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 Answers 4

62

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

Sign up to request clarification or add additional context in comments.

1 Comment

.prop('files')[0] is more likely to work than .attr('file')
4

Try the below code

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

Thanks

1 Comment

This looks correct as per: learn.jquery.com/using-jquery-core/faq/… The FAQ just mentions that this is slower... Why the downvote?
3

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

Comments

0
$(function () {
    $("#cmdSubmit").bind("click", function () {
       alert(this.files);
     });        
});​

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.