0

0

html如何实现选取本地文件夹所有文件名

心靈之曲

心靈之曲

发布时间:2026-02-12 20:45:02

|

988人浏览过

|

来源于php中文网

原创

html无法直接读取文件夹内容,浏览器安全限制使默认不支持选文件夹;需用webkitdirectory(chrome/safari/edge)或directory(仅firefox)属性配合multiple,但仅返回顶层条目且不递归。

html如何实现选取本地文件夹所有文件名

HTML 无法直接读取文件夹内容

浏览器出于安全限制,<input type="file"> 默认不支持选取整个文件夹并列出其所有文件名。所谓“选择文件夹”,实际是启用 webkitdirectory(非标准但广泛支持)或 directory(新标准,支持有限)属性,让用户选中一个目录,再由 JS 逐个读取其中的 File 对象——但注意:这仍只返回该目录**顶层**的文件和子目录条目,不递归。

input[type="file"] 启用目录选择的写法差异

两种主流方式,行为和兼容性不同:

  • <input type="file" webkitdirectory="webkitdirectory" directory="directory" multiple>:最常用,Chrome/Edge/Safari 支持良好;Firefox 仅支持 directory(需显式设为 directory=""),且要求 HTTPS 或 localhost
  • <input type="file" directory="">:W3C 标准属性,但目前仅 Firefox 原生支持;Chrome 等忽略它,退而使用 webkitdirectory
  • 必须带 multiple,否则即使选中目录,也只返回第一个条目
  • 用户点击后看到的是“选择文件夹”对话框,不是“选择多个文件”——这是关键体验区别

获取选中文件夹内所有文件名(含子目录)要自己递归

浏览器只提供目录下的一级 FileFileSystemHandle(后者需 showDirectoryPicker() API),没有现成的 readdir。想拿到所有文件名(尤其含嵌套路径),得手动遍历:

本地宝团购导航网站
本地宝团购导航网站

本地宝团购导航网站v1.2是由本地宝提供API接口调取团购数据,使用本程不用管理接口、数据采集,只需将程序放在网站某文件夹或域名下。程序是经过SEO优化,对提升网站流量有很大帮助,如果你的网站支持rewrite伪静态的话,你可以开启伪静态功能。 后台使用 后台地址:http://域名/admin 帐号密码:jiahai jiahai

下载
  • webkitdirectory 方式时,event.target.filesFileList,每个 FilewebkitRelativePath 字段包含相对于所选文件夹的路径(如 "docs/report.pdf"),可直接提取文件名
  • showDirectoryPicker()(推荐但兼容性差):返回 FileSystemDirectoryHandle,调用 handle.values() + 递归 isFile()/isDirectory() 判断,再用 getFile() 读取元数据
  • 注意:webkitRelativePath 在 Firefox 中为空,所以不能只依赖它;showDirectoryPicker() 需要 https://localhost,HTTP 页面直接报错 SecurityError
  • 简单示例(仅处理一级):
    input.addEventListener('change', e => {
      Array.from(e.target.files).forEach(file => {
        console.log(file.name); // 仅文件名
        console.log(file.webkitRelativePath); // 完整相对路径(Chrome/Safari)
      });
    });

常见错误现象与绕不过的限制

很多开发者卡在以下几点:

立即学习前端免费学习笔记(深入)”;

  • 用了 directory 却没加 multiple → 控制台无报错,但 files.length === 0 或只返回一个空 File
  • 在 HTTP 页面调用 showDirectoryPicker() → 控制台明确报错 Uncaught TypeError: showDirectoryPicker is not a functionSecurityError
  • 期望一次性拿到绝对路径(如 C:\xxx)→ 浏览器禁止暴露真实路径,webkitRelativePath 是唯一可用的路径信息,且仅限同源
  • 想用 Node.js 的 fs.readdirSync → HTML 运行在浏览器环境,无权访问本地文件系统,此路不通
  • 递归遍历时未处理 Promise 链或异步循环 → 导致只打印出部分文件名,或顺序混乱

真正能稳定跨浏览器拿到“所有文件名”的方案,目前只有 webkitdirectory + webkitRelativePath,但得接受它不支持 Firefox。如果必须全兼容,只能引导用户手动多选文件,或改用桌面端方案(如 Electron)。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

932

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

776

2023.11.06

edge是什么浏览器
edge是什么浏览器

Edge是一款由Microsoft开发的网页浏览器,是Windows 10操作系统中默认的浏览器,其目标是提供更快、更安全、更现代化的浏览器体验。本专题为大家提供edge浏览器相关的文章、下载、课程内容,供大家免费下载体验。

1551

2023.08.21

IE浏览器自动跳转EDGE如何恢复
IE浏览器自动跳转EDGE如何恢复

ie浏览器自动跳转edge的解决办法:1、更改默认浏览器设置;2、阻止edge浏览器的自动跳转;3、更改超链接的默认打开方式;4、禁用“快速网页查看器”;5、卸载edge浏览器;6、检查第三方插件或应用程序等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

389

2024.03.05

如何解决Edge打开但没有标题的问题
如何解决Edge打开但没有标题的问题

若 Microsoft Edge 浏览器打开后无标题(窗口空白或标题栏缺失),可尝试以下方法解决: 重启 Edge:关闭所有窗口,重新启动浏览器。 重置窗口布局:右击任务栏 Edge 图标 → 选择「最大化」或「还原」。 禁用扩展:进入 edge://extensions 临时关闭插件测试。 重置浏览器设置:前往 edge://settings/reset 恢复默认配置。 更新或重装 Edge:检查最新版本,或通过控制面板修复

977

2025.04.24

length函数用法
length函数用法

length函数用于返回指定字符串的字符数或字节数。可以用于计算字符串的长度,以便在查询和处理字符串数据时进行操作和判断。 需要注意的是length函数计算的是字符串的字符数,而不是字节数。对于多字节字符集,一个字符可能由多个字节组成。因此,length函数在计算字符串长度时会将多字节字符作为一个字符来计算。更多关于length函数的用法,大家可以阅读本专题下面的文章。

939

2023.09.19

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

520

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

350

2023.07.28

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

4

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.3万人学习

AngularJS教程
AngularJS教程

共24课时 | 3.6万人学习

CSS教程
CSS教程

共754课时 | 30.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号