元素,并结合webkitdirectory属性或Directory A…">
当前位置:首页 > JavaScript

js实现选择目录

2026-02-28 23:42:42JavaScript

实现目录选择功能

在JavaScript中实现目录选择功能通常涉及使用HTML的<input type="file">元素,并结合webkitdirectory属性或Directory API。以下是几种实现方法:

js实现选择目录

使用webkitdirectory属性(Chrome/Edge)

<input type="file" id="directoryInput" webkitdirectory directory multiple>
<script>
  document.getElementById('directoryInput').addEventListener('change', function(event) {
    const files = event.target.files;
    for (let i = 0; i < files.length; i++) {
      console.log(files[i].webkitRelativePath);
    }
  });
</script>

此方法仅在基于Chromium的浏览器中有效,会返回文件及其相对路径信息。

js实现选择目录

使用showDirectoryPicker() API(现代浏览器)

async function selectDirectory() {
  try {
    const dirHandle = await window.showDirectoryPicker();
    const files = [];

    for await (const entry of dirHandle.values()) {
      if (entry.kind === 'file') {
        files.push(await entry.getFile());
      }
    }

    console.log(files);
  } catch (error) {
    console.error('Error selecting directory:', error);
  }
}

此API需要安全上下文(HTTPS或localhost),返回文件系统句柄对象,允许更精细的目录操作。

使用传统文件输入+服务器处理

<form action="/upload" method="post" enctype="multipart/form-data">
  <input type="file" name="files" multiple directory webkitdirectory>
  <button type="submit">上传</button>
</form>

服务器端需要处理多文件上传并重建目录结构。

注意事项

  • 浏览器兼容性各不相同,webkitdirectory主要支持Chrome/Edge
  • showDirectoryPicker()是较新的API,支持Chrome 86+、Edge 86+、Firefox 111+
  • 用户隐私保护机制可能限制某些目录访问
  • 移动端浏览器支持有限

实际应用中通常需要结合多种方法并提供回退方案,同时考虑用户体验和隐私保护要求。

标签: 目录js
分享给朋友:

相关文章

js 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.defin…

js实现轮播图

js实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化…

uniapp 目录

uniapp 目录

uniapp 目录结构 uniapp 的目录结构遵循 Vue.js 项目的规范,同时包含一些特有的文件和目录。以下是典型的 uniapp 项目目录结构及其说明: project-name/ ├──…