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

如何判断JavaScript中FileReader是否完成文件读取?

FileReader 读取完成判断与 result 可用性说明
  • 首先明确:FileReader 的load事件本身就是在文件完全读取完成后才触发的,只要进入这个事件的回调函数,你就可以直接从reader.result获取完整的文件文本,不需要额外判断loaded和total的关系。
  • 你在progress事件里通过e.loaded === e.total来判断完成是可行的,但这属于用进度事件来做完成判断,不如直接监听load事件来得直接和规范——毕竟load事件就是专门为读取成功完成这个场景设计的。
  • 关于ProgressEvent的loaded和total:loaded代表已读取的字节数,total是文件的总字节数,正常读取流程中loaded只会小于等于total,所以total/loaded的比值是≥1的(只有完成时等于1)。但反过来,只有当e.loaded === e.total(或者比值等于1)时,才能确定读取完全完成,因为只要还有字节没读完,loaded就会小于total。

给你一个更简洁规范的fileToStr实现示例:

function fileToStr(file, callback) {
  const reader = new FileReader();
  reader.onload = () => callback(null, reader.result);
  reader.onerror = (e) => callback(e.error);
  reader.readAsText(file);
}

额外提醒:如果读取过程中出现错误,会触发error事件而不会触发load,所以建议同时监听error事件处理异常情况。

内容的提问来源于stack exchange,提问作者Hairi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 20:07:40