实现文件夹选择 在 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 对象,可以通过遍历访问每个文件的信息。

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 属性提供了文件在文件夹中的相对路径,有助于重建文件夹结构。

处理选中的文件

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

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。这些库提供了更丰富的文件选择和上传功能。

js实现文件夹选择器

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

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

分享给朋友:

相关文章

js实现操作文件夹

js实现操作文件夹

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

jquery选择器有哪些

jquery选择器有哪些

jQuery 选择器分类 jQuery 选择器基于 CSS 选择器语法,扩展了更强大的元素筛选功能,主要分为以下几类: 基本选择器 ID 选择器:通过元素的 id 属性匹配单个元素。 示例:$("#…

jquery表单选择器

jquery表单选择器

jQuery表单选择器概述 jQuery提供了一系列专门用于表单元素的选择器,可以快速定位表单内的各类控件(如输入框、按钮、下拉框等)。这些选择器以:符号开头,通常与其他选择器组合使用。 常用表单选…

jquery兄弟选择器

jquery兄弟选择器

jQuery 兄弟选择器 jQuery 提供了多种选择器用于选取兄弟元素(即与当前元素同级的其他元素)。以下是常见的兄弟选择器及其用法: 相邻兄弟选择器(+) 选取紧接在指定元素后的第一个兄弟元素:…

jquery后代选择器

jquery后代选择器

jQuery 后代选择器用法 后代选择器用于选取指定元素内部的所有匹配后代元素,无论嵌套层级多深。语法为ancestor descendant,中间用空格分隔。 选取所有后代元素 $("paren…