实现文件夹选择 在 HTML 中,可以通过
当前位置:首页 > JavaScript

js实现文件夹选择器

2026-01-31 11:39:25JavaScript

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

在 HTML 中,可以通过 <input type="file" webkitdirectory directory multiple> 属性实现文件夹选择功能。该属性允许用户选择整个文件夹及其内容。

<input type="file" id="folderInput" webkitdirectory directory multiple>
<script>
  document.getElementById('folderInput').addEventListener('change', function(event) {
    const files = event.target.files;
    console.log(files); // 文件列表
  });
</script>

webkitdirectorydirectory 属性确保浏览器允许选择文件夹,multiple 允许选择多个文件。

监听文件夹选择事件

通过监听 change 事件,可以获取用户选择的文件夹中的文件列表。文件列表是一个 FileList 对象,可以通过遍历访问每个文件的信息。

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].name); // 文件名
    console.log(files[i].webkitRelativePath); // 相对路径
  }
});

webkitRelativePath 属性提供了文件在文件夹中的相对路径,有助于重建文件夹结构。

处理选中的文件

获取文件列表后,可以进一步处理这些文件,例如上传到服务器或在前端进行预览。

js实现文件夹选择器

document.getElementById('folderInput').addEventListener('change', function(event) {
  const files = event.target.files;
  Array.from(files).forEach(file => {
    const reader = new FileReader();
    reader.onload = function(e) {
      console.log(e.target.result); // 文件内容
    };
    reader.readAsText(file); // 以文本形式读取文件
  });
});

FileReader 可以读取文件内容,支持文本、二进制或 DataURL 格式。

兼容性注意事项

webkitdirectory 属性主要在基于 Chromium 的浏览器(如 Chrome、Edge)中支持,Firefox 也支持,但 Safari 和某些旧版浏览器可能不支持。可以通过检查属性是否存在来提供备用方案。

if ('webkitdirectory' in document.createElement('input')) {
  // 支持文件夹选择
} else {
  // 不支持,显示提示或备用方案
  console.log('浏览器不支持文件夹选择功能');
}

使用第三方库

如果需要更复杂的功能或更好的兼容性,可以考虑使用第三方库,如 dropzone.jsfilepond。这些库提供了更丰富的文件选择和上传功能。

// 使用 dropzone.js 示例
Dropzone.options.myDropzone = {
  url: "/upload",
  dictDefaultMessage: "拖拽文件夹或点击选择",
  acceptedFiles: "*/*",
  init: function() {
    this.on("addedfiles", function(files) {
      console.log(files);
    });
  }
};

第三方库通常提供更好的用户体验和跨浏览器支持。

分享给朋友:

相关文章

制作css选择器

制作css选择器

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

js实现父选择器

js实现父选择器

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

js实现文件夹效果

js实现文件夹效果

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

jquery的选择器

jquery的选择器

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

jquery类选择器

jquery类选择器

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

jquery基本选择器

jquery基本选择器

jQuery 基本选择器 jQuery 提供了一系列基本选择器,用于快速定位和操作 DOM 元素。这些选择器基于 CSS 选择器语法,但功能更强大且兼容性更好。 元素选择器 通过 HTML 标签名称…