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

FileSystem Access API仅能创建.txt文件,.ini等扩展名报错求助

问题描述

开发Next.js应用时,使用FileSystem Access API获取用户指定文件夹的FileSystemDirectoryHandle,调用getFileHandle创建文件时,仅.txt扩展名成功,其他扩展名(如.ini)抛出错误:

desLoad failed:  TypeError: Failed to execute 'getFileHandle' on 'FileSystemDirectoryHandle': Name is not allowed.

可正常执行的代码:

desTestHandle = await newBuildingHandle.getFileHandle('desload.txt', {
   create: true,
});

执行报错的代码:

desTestHandle = await newBuildingHandle.getFileHandle('desload.ini', {
   create: true,
});

此前两周.ini文件可正常创建,本周出现异常。

解决思路
  • 检查浏览器权限更新:部分浏览器近期可能调整了FileSystem Access API的文件扩展名限制,尤其是系统相关扩展名(比如.ini属于系统配置文件类)。可尝试在浏览器设置中重置该网站的文件系统权限,重新授权文件夹访问。
  • 验证文件名合法性:确认文件名是否包含浏览器或系统禁止的特殊字符,哪怕是隐形字符(如空格、全角符号)。先尝试创建test.ini这类极简文件名测试,排除文件名本身的问题。
  • 检查浏览器版本兼容性:查看浏览器是否有版本更新,新版本可能对API安全策略做了调整。尝试降级或升级浏览器版本,对比测试结果。
  • 确认文件夹权限范围:确保获取的FileSystemDirectoryHandle拥有读写权限,而非只读。可通过queryPermission方法检查并申请权限:
    const permission = await newBuildingHandle.queryPermission({ mode: 'readwrite' });
    if (permission !== 'granted') {
      await newBuildingHandle.requestPermission({ mode: 'readwrite' });
    }
    
  • 测试自定义扩展名:尝试创建.config或.custom这类非系统关联的扩展名,判断是仅.ini被限制,还是所有非.txt扩展名都受影响,缩小问题范围。
  • 清除Next.js开发缓存:开发环境下缓存可能导致异常,执行next clean清除缓存后重启开发服务再测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 01:14:56