实现文件选择 通过 HTML 原生文件输入框实现单个或多个文件选择:
当前位置:首页 > JavaScript

js实现文件目录选择

2026-04-04 03:42:39JavaScript

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

通过 HTML 原生文件输入框实现单个或多个文件选择:

js实现文件目录选择

<input type="file" id="fileInput" multiple>  
<script>  
  document.getElementById('fileInput').addEventListener('change', (event) => {  
    const files = event.target.files;  
    console.log('Selected files:', files);  
  });  
</script>  
  • multiple 属性允许选择多个文件。
  • 通过 event.target.files 获取选择的文件列表(FileList 对象)。

使用 webkitdirectory 实现目录选择

仅适用于 Chrome/Edge 等基于 Chromium 的浏览器,允许选择整个目录:

js实现文件目录选择

<input type="file" id="dirInput" webkitdirectory>  
<script>  
  document.getElementById('dirInput').addEventListener('change', (event) => {  
    const files = event.target.files;  
    console.log('Directory files:', files);  
  });  
</script>  
  • 选择的文件列表包含目录内所有文件的层级路径(通过 File.webkitRelativePath 获取)。

使用第三方库(如 dropzone.js

适用于需要拖放上传或更复杂交互的场景:

  1. 安装库:
    npm install dropzone
  2. 示例代码:
    import Dropzone from "dropzone";  
    const dropzone = new Dropzone("#dropzone", {  
    url: "/upload",  
    autoProcessQueue: false,  
    accept: (file, done) => {  
     console.log("File added:", file);  
     done();  
    }  
    });  
  • 支持拖放文件/目录上传。
  • 需配合后端处理上传逻辑。

通过 Electron 实现系统目录选择

在桌面端应用中,使用 Electron 的 dialog 模块:

const { dialog } = require('electron');  
const result = await dialog.showOpenDialog({  
  properties: ['openDirectory']  
});  
console.log('Selected directory:', result.filePaths);  
  • 仅适用于 Electron 环境。
  • openDirectory 限制只能选择目录。

注意事项

  • 浏览器安全性限制:JavaScript 无法直接访问本地文件系统路径(C:\ 等)。
  • 目录选择兼容性:webkitdirectory 非标准特性,Firefox/Safari 可能不支持。
  • 文件处理:通过 FileReader API 读取文件内容,例如:
    const reader = new FileReader();  
    reader.onload = (e) => console.log(e.target.result);  
    reader.readAsText(file);  

标签: 文件目录
分享给朋友:

相关文章

vue实现文章目录

vue实现文章目录

Vue 实现文章目录的方法 使用插件自动生成目录 安装 vue-toc 插件: npm install vue-toc --save 在组件中引入并使用: <template> &…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

vue文件底层实现

vue文件底层实现

Vue 文件的底层实现 Vue 单文件组件(SFC,即 .vue 文件)的底层实现依赖于 Vue 的编译工具链,主要包括 @vue/compiler-sfc 和构建工具(如 Vite 或 Webpac…

vue实现文件预览

vue实现文件预览

Vue 实现文件预览的方法 文件预览功能通常涉及图片、PDF、Office文档等多种格式的处理。以下是几种常见文件类型的实现方案: 图片预览 使用 <input type="file">…

js实现文件的上传

js实现文件的上传

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。HTML部分需要包含一个文件选择控件和一个提交按…

vue实现文件进度

vue实现文件进度

Vue 实现文件上传进度 使用 Vue 实现文件上传进度可以通过结合 axios 或原生 XMLHttpRequest 的进度事件来实现。以下是两种常见方法: 使用 axios 上传文件并显…