Jquery input.files等价

我有一个简单的html表单,只有一个文件上传输入。 ( jsfiddle)

在过去,我已经使用input.files访问了用户选择的文件,但是我不知道如何使用JQuery执行此操作;

码:

 $(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 }); });​ 

选项A给出了我期望的文件对象。 但是,选项B只是给我上传文件的名称,并且(据我所知)不是文件本身。

选项C显示files未定义。

什么是input.files等效的input.files

注意:我不反对使用原生javascript; 但鉴于我在整个项目的其余部分使用JQuery,我更愿意在这里使用它,如果可能的话。

您必须访问该元素。 尝试:

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

或者(谢谢杰克)

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

小提琴

jQuery没有为Files API提供包装器。 所以没有jQuery风格的方法来做到这一点,至少没有内置到jQuery核心。

你的选择:

  • 坚持选择A.
  • 等待jQuery包含这样的包装器(它们可能不会)
  • 找到其他人写的扩展名(如果存在)
  • 自己写一个扩展

请尝试以下代码

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

谢谢

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