You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用jQuery获取文件输入的files属性时显示undefined的解决方法

解决jQuery获取文件输入框files属性为undefined的问题

问题原因

jQuery选择器返回的是jQuery包装后的对象,而非原生的HTMLInputElement节点,直接访问$('input[type="file"]').files自然会得到undefined——因为这个属性只存在于原生DOM元素上。

解决方法

你需要先从jQuery对象中获取到原生DOM元素,或者使用jQuery的.prop()方法直接读取属性,两种方式都能拿到正确的FileList对象。

方法1:通过索引获取原生DOM元素

jQuery对象本质是包含DOM元素的类数组,通过[0]可以取出第一个匹配的原生元素:

$('#btn').click(function() {
  // 获取原生DOM元素
  const fileInput = $('#your-file-input')[0];
  // 读取files属性
  const files = fileInput.files;
  
  if (files.length > 0) {
    // 遍历文件信息
    for (let i = 0; i < files.length; i++) {
      console.log(`文件名:${files[i].name}`);
      console.log(`文件大小:${files[i].size}字节`);
      console.log(`文件类型:${files[i].type}`);
    }
  }
});

方法2:使用jQuery的.prop()方法

.prop()方法可以直接获取DOM元素的原生属性,包括files:

$('#btn').click(function() {
  const files = $('#your-file-input').prop('files');
  
  if (files.length > 0) {
    // 转成数组后遍历
    Array.from(files).forEach(file => {
      console.log(`文件名:${file.name}`);
      console.log(`文件大小:${file.size}字节`);
      console.log(`文件类型:${file.type}`);
    });
  }
});

补充说明

  • 如果文件输入框开启了多选(设置了multiple属性),files会是一个类数组的FileList对象,包含所有选中的文件
  • 操作前建议先判断files.length > 0,避免用户未选择文件时出现错误

内容的提问来源于stack exchange,提问作者mostafa-jamali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 05:01:35