当前位置: 首页 > news >正文

Web前端之上传文件夹、webkitdirectory

MENU

  • 前言
  • Element-Ui写法
  • input写法

前言

1、以下代码只实现的单个文件夹的上传,原本需求是实现选择多个文件夹上传,但是没找到实现的方法。如果想实现多个文件夹上传,可以给这些文件夹新建一个父级文件夹,点击上传的时候选择父级文件夹,就能遍历该父级文件夹下的所有子集文件夹,这样就能实现多个文件夹上传了。
2、其他文章链接,文章内容并没有去实践,有兴趣的伙伴可以看看。


Element-Ui写法

Html

<el-uploadclass="upload-demo"action="#":on-remove="fileRemove":on-change="fileChang"accept="":auto-upload="false":multiple="true":file-list="form.instFilePics"ref="uploadFile"><el-buttonsize="small"type="primary"><iclass="el-icon-folder-opened"></i></el-button></el-upload>

JavaScrip

data(){return{form:{instFilePics:[],instFile:[]},}},mounted(){// 以下代码有时候可能写法不同,// 可在控制台打印一层一层的找input,// 再加webkitdirectory属性this.$refs.uploadFile.$children[0].$refs.input.webkitdirectory=true;},methods:{fileChang(file,fileList,name){this.form.instFilePics=fileList;},fileRemove(file,fileList,name){this.form.instFilePics=fileList},}

解析

html
01、<el-upload>是一个Element UI的上传组件,用于上传文件。
02、class="upload-demo"为上传组件添加一个CSS类,用于样式定制。
03、action="#"指定上传的服务器地址,这里设置为#,表示不进行实际的上传操作。
04、:on-remove="fileRemove"监听文件被移除的事件,当文件被移除时,调用fileRemove方法。
05、:on-change="fileChang"监听文件变化的事件,当文件发生变化时,调用fileChang方法。
06、accept=""指定可以上传的文件类型,这里为空,表示不限制文件类型。
07、:auto-upload="false"设置为false表示上传操作不会自动进行,需要手动触发。
08、:multiple="true"设置为true表示支持多文件上传。
09、:file-list="form.instFilePics"绑定一个文件列表,这个列表将显示在上传组件中。
10、ref="uploadFile"为上传组件设置一个引用,可以在Vue实例中通过this.$refs.uploadFile访问到这个组件。


JavaScrip
1、data()定义组件的数据,其中form对象包含两个数组,instFilePics用于存储上传的文件列表,instFile可能用于其他文件上传的数组。
2、mounted()在组件挂载到DOM后执行,通过this.$refs.uploadFile.$children[0].$refs.input.webkitdirectory = true;设置文件输入框支持选择文件夹。
3、methods定义两个方法,fileChang和fileRemove。
3.1、fileChang(file, fileList, name)当文件列表发生变化时,更新form.instFilePics为最新的文件列表。
3.2、fileRemove(file, fileList, name)当文件被移除时,更新form.instFilePics为最新的文件列表。


总结
代码段实现一个文件上传组件,用户可以选择文件或文件夹进行上传,上传的文件列表会显示在界面上。通过fileChang和fileRemove方法,可以处理文件列表的变化和文件的移除操作。


input写法

Html

<divclass="select-files-btn"><el-buttontype="primary"@click="choiceFiles"><iclass="el-icon-folder-opened"></i></el-button><inputref="filElem"type="file"multipleclass="upload-file"webkitdirectory@change="getFile"/></div>

JavaScrip

methods:{choiceFiles(){// 以下代码有时候写法不同,// 可在控制台打印一层一层的找inputthis.$refs.filElem.click();},getFile(e){letfiles=e.target.files;console.log(files);}}

解析

html
1、<div class="select-files-btn">是一个包含按钮和文件输入框的容器。
2、<el-button type="primary" @click="choiceFiles">是一个Element UI的按钮组件,类型为primary,表示按钮是主要操作按钮。@click="choiceFiles"是一个事件监听器,当按钮被点击时,会调用Vue实例中的choiceFiles方法。
3、<i class="el-icon-folder-opened"></i>是一个图标,使用Element UI的图标类,显示一个打开的文件夹图标。
4、<input ref="filElem" type="file" multiple class="upload-file" webkitdirectory @change="getFile"/>是一个文件输入框,允许用户选择多个文件(multiple属性)。ref="filElem"是一个Vue的引用,允许在Vue实例中直接访问这个DOM元素。webkitdirectory属性允许用户选择文件夹,而不是单个文件。@change="getFile"是一个事件监听器,当文件选择框的值发生变化时,会调用Vue实例中的getFile方法。


JavaScrip
1、choiceFiles()方法会在用户点击按钮时被调用。它通过this.$refs.filElem.click()模拟点击文件输入框,允许用户选择文件而不直接点击输入框。
2、getFile(e)方法会在文件输入框的值发生变化时被调用(即用户选择了文件后)。e.target.files包含用户选择的所有文件,然后这些文件会被打印到控制台。


总结
代码段提供一个用户界面,允许用户通过点击一个按钮来选择文件或文件夹,并在选择后将文件信息打印到控制台。这通常用于文件上传功能。

http://www.jsqmd.com/news/446803/

相关文章:

  • 通俗易懂解释知识图谱(Knowledge Graph)
  • Web前端之实现酷炫的仪表进度条、JavaScript动态设置Css属性值、标签元素属性选择器、hsl样式函数
  • 优先队列(priority_queue)总结
  • Web前端之实现累计功能、原生与UniApp版微信小程序两种方式实现、计算、累加、getElementById、innerHTML、Number
  • 在 SAP Kyma 上使用 Redis 服务
  • Web前端之鼠标悬浮,鼠标移入和鼠标移出、getElementById、onmouseover、onmouseout、mouseenter、mouseleave、hover
  • 读懂 Cost-Based Optimization:SAP HANA SQL 优化器如何用成本模型选出更快的执行计划
  • 这才是未来的“openclaw”
  • git 命令总结
  • postpresql 表结构修改、添加字段、外键、主键自增逻辑设置
  • 从扫描到索引:SAP HANA 查询处理路径与优化技巧的落地实战
  • 把运行在 Docker 容器内的 Microsoft SQL 服务器部署到 SAP Kyma 中
  • Python—1、基础篇
  • 读懂 SAP HANA 的 Optimized Logical Plan 与 Optimized Physical Plan:把优化器的思路“看见”
  • 在 SAP BTP Kyma Runtime 上使用 Redis 读取和存储数据
  • [从0开始学Java|第十二天]学生管理系统升级 - 详解
  • 服务端之nestJS常用异常类及封装自定义响应模块
  • ROS 摄像头参数标定
  • OBLITERATUS:解锁大模型无限潜力
  • 会穿搭才是真的美,聪明女人必学的搭配技巧,优雅高级又有气质
  • 为macOS Finder提供直观的剪切粘贴体验 - 实践
  • C#委托学习思维导图
  • 一、HTML简介与开发环境
  • 技术架构解析:如何构建高并发、合规的本地生活多平台抽佣系统
  • 小程序商城平台哪家强?做商城小程序选哪个制作平台? - 码云数智
  • [kotlin] 从Java到Kotlin:掌握基础语法差异的跃迁指南 - 指南
  • 小程序商城哪个平台好,SaaS小程序商城平台深度对比 - 码云数智
  • 小程序开发一个多少钱啊,三种方式的费用构成与适用场景 - 码云数智
  • 如何做一个微信小程序商城 - 码云数智
  • 两个空,一个空性:AI元人文指向同一个家