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

js实现文件目录选择

2026-04-04 03:42:39JavaScript

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

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

<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 的浏览器,允许选择整个目录:

<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 模块:

js实现文件目录选择

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 中实现文件模板展示通常涉及文件上传、预览和模板渲染等功能。以下是几种常见的实现方式。 使用文件上传组件 通过 Vue 的文件上传组件(如 el-uploa…

php实现文件下载代码

php实现文件下载代码

实现文件下载的基本方法 使用PHP实现文件下载的核心是通过设置HTTP头部信息,强制浏览器触发下载行为而非直接显示文件内容。 $file_path = 'path/to/your/file.ext'…

vue实现递归目录

vue实现递归目录

实现递归目录的基本思路 在Vue中实现递归目录通常涉及使用递归组件,即组件在其模板中调用自身。这种方式适合展示树形结构数据,如文件目录、菜单等。 递归组件实现步骤 创建递归组件需要定义一个有名称的组…

vue 实现目录树

vue 实现目录树

Vue 实现目录树的方法 在 Vue 中实现目录树功能可以通过多种方式完成,以下是一些常见的方法: 使用递归组件实现目录树 递归组件是 Vue 中实现树形结构的常见方法,通过组件自身调用自身来实现多…

vue实现文件管理系统

vue实现文件管理系统

Vue 文件管理系统实现方案 核心功能模块设计 文件展示组件:使用树形结构展示目录层级,配合递归组件实现无限嵌套 上传下载功能:通过axios与后端API交互,支持拖拽上传和分片上传 权限控制系统:基…

vue实现文件导入导出

vue实现文件导入导出

Vue 文件导入 在 Vue 中实现文件导入通常通过 <input type="file"> 元素结合 FileReader API 完成。 <template> <…