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

Chrome中FileSystemFileEntry.file()生成的File对象缺失webkitRelativePath

问题背景

拖拽包含目标文件的文件夹后,可获取到FileSystemFileEntry对象:
FileSystemFileEntry对象

调用该对象的.file()方法转换为File对象后,不同浏览器的webkitRelativePath属性表现存在差异:

  • Firefox:该属性会自动填充完整路径
    Firefox中的File对象
  • Chrome:该属性为空字符串
    Chrome中的File对象
问题解答

1. 如何让Chrome中的File对象保留完整路径?

直接通过FileSystemFileEntry的fullPath属性获取完整路径,手动赋值给File对象的webkitRelativePath即可,示例代码:

// entry为获取到的FileSystemFileEntry对象
entry.file(file => {
  // 手动填充相对路径
  file.webkitRelativePath = entry.fullPath;
  // 后续可直接使用该file对象
});

也可以在遍历文件夹的过程中,自行维护每个文件的相对路径信息,不依赖File对象的webkitRelativePath属性。

2. 这是预期行为还是Chrome的bug?

这是Chrome的预期行为。webkitRelativePath属性最初是为文件上传控件(<input type="file" webkitdirectory>)设计的,而Chrome的FileSystem API实现中,并没有为通过.file()转换得到的File对象自动填充该属性的逻辑。Firefox额外做了兼容处理,但这并非通用规范要求的行为。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:50:57