2012-12-06 7 views
17

Mam prosty formularz HTML z jednym wejściem do przesyłania plików. (jsfiddle)Jquery input.files equivalent

W przeszłości, mam dostęp do pliku wybranego przez użytkownika za pomocą input.files jednak jestem ze stratą, jak to zrobić z JQuery;

Kod:

$(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 

    });   
});​ 

opcja dać mi to, czego się spodziewać, obiekt pliku. jednak opcja B po prostu daje mi nazwę przesłanego pliku i (o ile mogę powiedzieć), nie sam plik.

Opcja C pokazuje, że files jest niezdefiniowana.

Jaki jest odpowiednik Jquery z input.files?

Uwaga: nie mam zastrzeżeń do korzystania z natywnego języka javascript; ale biorąc pod uwagę, że używam JQuery przez resztę tego projektu, wolałbym go tutaj użyć, jeśli to możliwe.

Odpowiedz

33

Musisz uzyskać dostęp do elementu. Spróbuj:

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

lub (dziękuję Jack)

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

Fiddle

+0

Piękny - dziękuję! – Mansfield

+3

'.prop ('files') [0]' jest bardziej prawdopodobne niż plik '.attr ('file')' –

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

jQuery nie zapewnia otoki dla API Files. Więc nie ma na to sposobu w stylu jQuery, przynajmniej nie wbudowanego w rdzeń jQuery.

Twoje opcje:

  • kij z opcja A
  • czekać na jQuery zawierać taką owijkę (nie może)
  • znaleźć rozszerzenie napisany przez kogoś innego (jeśli taki istnieje)
  • napisać rozszerzenie samodzielnie
1

Wypróbuj poniższy kod

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

Dzięki

+0

To wygląda poprawnie na: https://learn.jquery.com/using-jquery-core/faq/how-do-i-pull-a-native-dom-element-from-a-jquery-object/ W najczęściej zadawanych pytaniach wspomina się tylko, że jest to wolniej ... Dlaczego przestąpiliśmy? – Andz