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

js实现文件夹选择器

2026-04-05 03:46:49JavaScript

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

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

js实现文件夹选择器

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

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

js实现文件夹选择器

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);
    }
}

处理文件列表的递归遍历

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

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>

分享给朋友:

相关文章

vue实现选择器

vue实现选择器

Vue 实现选择器的方法 在 Vue 中实现选择器可以通过原生 HTML <select> 元素或第三方 UI 库(如 Element UI、Vuetify 等)完成。以下是几种常见实现方…

mac上如何找到react文件夹

mac上如何找到react文件夹

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

js实现父选择器

js实现父选择器

在JavaScript中,没有直接的“父选择器”方法,但可以通过DOM操作或选择器组合实现类似功能。以下是几种常见方法: 通过parentNode属性获取父元素 使用parentNode属性可以获取…

js实现操作文件夹

js实现操作文件夹

使用Node.js操作文件夹 Node.js内置的fs模块提供文件系统操作功能,可以创建、读取、删除文件夹。以下是常用方法: 安装Node.js 确保已安装Node.js环境,官网下载安装包进行安装…

jquery的选择器

jquery的选择器

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

jquery元素选择器

jquery元素选择器

jQuery 元素选择器 jQuery 提供了多种选择器来选取 DOM 元素,以下是常见的几种方法: 基本选择器 $("tagName"):选取所有指定标签的元素,如 $("div") 选取所有…