实现文件夹选择 HTML5 提供了 webkitdirectory 属性,允许用户选择整个文件夹(仅限基于 Chromium 的浏览器):…">
当前位置:首页 > JavaScript

js实现文件夹选择器

2026-04-05 03:46:49JavaScript

使用 <input type="file"> 实现文件夹选择

HTML5 提供了 webkitdirectory 属性,允许用户选择整个文件夹(仅限基于 Chromium 的浏览器):

<input type="file" id="folderInput" webkitdirectory directory multiple>

JavaScript 获取选择的文件夹内容:

document.getElementById('folderInput').addEventListener('change', function(event) {
    const files = event.target.files;
    for (let i = 0; i < files.length; i++) {
        console.log(files[i].webkitRelativePath); // 显示文件相对路径
    }
});

使用 File System Access API(现代浏览器)

更先进的文件夹访问方式,需要用户主动触发:

async function pickFolder() {
    try {
        const dirHandle = await window.showDirectoryPicker();
        for await (const entry of dirHandle.values()) {
            console.log(entry.kind, entry.name);
        }
    } catch (err) {
        console.error('用户取消选择', err);
    }
}

处理文件列表的递归遍历

对于选中的文件夹,可以递归处理子目录:

js实现文件夹选择器

async function processDirectory(directoryHandle) {
    const files = [];
    for await (const entry of directoryHandle.values()) {
        if (entry.kind === 'file') {
            files.push(await entry.getFile());
        } else if (entry.kind === 'directory') {
            files.push(...await processDirectory(entry));
        }
    }
    return files;
}

兼容性注意事项

  • webkitdirectory 仅在 Chrome/Edge 等浏览器支持
  • File System Access API 需要 HTTPS 环境或 localhost
  • 旧版浏览器需使用传统文件选择或多选模式

完整示例代码

<button id="pickFolder">选择文件夹</button>
<script>
document.getElementById('pickFolder').addEventListener('click', async () => {
    const dirHandle = await window.showDirectoryPicker();
    const fileList = await processDirectory(dirHandle);
    console.log('获取文件总数:', fileList.length);
});
</script>

分享给朋友:

相关文章

mac上如何找到react文件夹

mac上如何找到react文件夹

使用 Finder 搜索 打开 Finder,在顶部菜单栏选择“前往”>“前往文件夹”(或使用快捷键 Command + Shift + G)。输入路径 ~/ 进入用户主目录,手动浏览项目文件夹…

制作css选择器

制作css选择器

CSS选择器的基本类型 元素选择器:直接使用HTML标签名匹配元素。例如p选择所有<p>标签。 类选择器:以点号.开头,匹配class属性。例如.header选择所有class="hea…

php实现网盘文件夹

php实现网盘文件夹

PHP实现网盘文件夹功能 使用PHP实现网盘文件夹功能需要处理文件上传、目录管理、权限控制等核心模块。以下是具体实现方法: 数据库设计 创建必要的数据库表存储文件和文件夹信息: CREATE TA…

js实现文件夹效果

js实现文件夹效果

实现文件夹效果的方法 在JavaScript中实现文件夹效果通常涉及模拟文件系统的层级结构,包括文件夹的展开、折叠、拖放等功能。以下是几种常见的实现方式: 使用HTML和CSS构建基础结构 通过嵌套…

js实现文件夹选择器

js实现文件夹选择器

使用 <input type="file"> 实现文件夹选择 在 HTML 中,可以通过 <input type="file" webkitdirectory directory m…

jquery的选择器

jquery的选择器

jQuery 选择器基本语法 jQuery 选择器基于 CSS 选择器语法扩展,用于快速定位 DOM 元素。基本语法为 $("selector") 或 jQuery("selector"),返回匹配元…