实现文件夹选择 通过设置 webkitdirectory 属性(Chrome/Edge)或 directory 属性(Firefox),允许用…">
当前位置:首页 > JavaScript

js实现文件夹选择器

2026-03-02 02:55:49JavaScript

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

通过设置 webkitdirectory 属性(Chrome/Edge)或 directory 属性(Firefox),允许用户选择文件夹而非单个文件。示例代码:

<input type="file" id="folderInput" webkitdirectory directory multiple />
<script>
  document.getElementById('folderInput').addEventListener('change', (event) => {
    const files = event.target.files;
    for (const file of files) {
      console.log(file.webkitRelativePath); // 输出文件在文件夹中的相对路径
    }
  });
</script>

监听拖放文件夹事件

通过 drop 事件监听用户拖放的文件夹,需配合 DataTransferItem API 处理目录结构:

document.addEventListener('drop', (e) => {
  e.preventDefault();
  const items = e.dataTransfer.items;
  for (const item of items) {
    if (item.kind === 'file') {
      const entry = item.webkitGetAsEntry();
      if (entry.isDirectory) {
        readDirectory(entry);
      }
    }
  }
});

function readDirectory(directoryEntry) {
  const reader = directoryEntry.createReader();
  reader.readEntries((entries) => {
    for (const entry of entries) {
      if (entry.isFile) {
        entry.file((file) => {
          console.log(file.name);
        });
      }
    }
  });
}

使用第三方库(如 file-system-access

对于需要更复杂操作的场景,可考虑使用支持现代 File System Access API 的库:

import { showDirectoryPicker } from 'file-system-access';

async function pickFolder() {
  const dirHandle = await showDirectoryPicker();
  for await (const entry of dirHandle.values()) {
    console.log(entry.name);
  }
}

注意:File System Access API 目前仅在高版本 Chrome/Edge 中完全支持。

兼容性提示

  • webkitdirectory 在 Chrome、Edge、Opera 中有效,Firefox 需使用 directory
  • Safari 部分版本不支持文件夹选择。
  • 生产环境中建议检测 API 支持情况并提供降级方案(如传统文件上传)。

js实现文件夹选择器

分享给朋友:

相关文章

mac上如何找到react文件夹

mac上如何找到react文件夹

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

js实现文件夹目录选择文件

js实现文件夹目录选择文件

使用 <input type="file"> 实现文件选择 通过HTML的<input type="file" webkitdirectory directory multiple&…

js实现父选择器

js实现父选择器

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

js实现文件夹选择器

js实现文件夹选择器

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

jquery类选择器

jquery类选择器

jQuery 类选择器基本语法 使用 jQuery 选择类名为 example 的所有元素,语法为: $(".example") 此语法类似于 CSS 的类选择器,返回包含所有匹配元素的 jQu…

jquery标签选择器

jquery标签选择器

jQuery 标签选择器 jQuery 标签选择器用于直接选取 HTML 元素,通过标签名(如 div、p、a 等)匹配 DOM 元素。语法简单高效,适合快速操作特定类型的元素。 语法格式 $…