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-button size="small" type="primary"><i class="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

<div class="select-files-btn"><el-button type="primary" @click="choiceFiles"><i class="el-icon-folder-opened"></i></el-button><input ref="filElem" type="file" multiple class="upload-file" webkitdirectory @change="getFile"/>
</div>

JavaScrip

methods: {choiceFiles(){// 以下代码有时候写法不同,// 可在控制台打印一层一层的找inputthis.$refs.filElem.click();},getFile(e){let files = 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.mzph.cn/web/40528.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

14-36 剑和诗人10 - 用LLM构建 AI 代理平台

介绍 在当今快速发展的技术环境中&#xff0c;大型语言模型 (LLM) 和 AI 代理正在改变我们与信息交互、实现流程自动化以及应对不同行业复杂挑战的方式。随着这些强大的模型不断发展&#xff0c;对能够无缝集成和协调它们的强大平台的需求变得越来越重要。 让我们深入研究设计…

android2024 gradle8 Processor和ksp两种编译时注解实现

android编译时注解&#xff0c;老生常谈&#xff0c;外面的例子都是bindView&#xff0c;脑壳看疼了&#xff0c;自己学习和编写下。 而且现在已经进化到kotlin2.0&#xff0c;google也逐渐放弃kapt&#xff0c;进入维护状态。所以要好好看看本贴。 参考我的工程&#xff1a; h…

数据结构之算法的时间复杂度

1.时间复杂度的定义 在计算机科学中&#xff0c;算法的时间复杂度是一个函数&#xff0c;它定量描述了算法的运行时间。一个算法所花费的时间与其中语句的执行次数成正比列&#xff0c;算法中的基本操作的执行次数&#xff0c;为算法的时间复杂度 例1&#xff1a; 计算Func1…

Linux:ollama大模型部署

目录 Ollama 是一个能在本地机器上轻松构建和运行大型语言模型的轻量级、可扩展框架&#xff0c;适用于多种场景&#xff0c;具有易于使用、资源占用少、可扩展性强等特点。 1.安装下载ollama 2.为 Ollama 创建一个用户 3.为ollama创建服务文件 4.启动ollama服务 5.拉取语…

Java 家庭物联网

家庭物联网系统的代码和说明&#xff0c;包括用户认证、设备控制、数据监控、通知和警报、日志记录以及WebSocket实时更新功能。 ### 项目结构 plaintext home-iot-system ├── backend │ └── src │ └── main │ └── java │ └…

图书馆数据仓库

目录 1.数据仓库的数据来源为业务数据库&#xff08;mysql&#xff09; 初始化脚本 init_book_result.sql 2.通过sqoop将mysql中的业务数据导入到大数据平台&#xff08;hive&#xff09; 导入mysql数据到hive中 3.通过hive进行数据计算和数据分析 形成数据报表 4.再通过sq…

【matlab】智能优化算法——求解目标函数

智能优化算法在求解目标函数方面发挥着重要作用&#xff0c;它通过迭代、筛选等方法来寻找目标函数的最优值&#xff08;极值&#xff09;。以下是关于智能优化算法求解目标函数的详细介绍&#xff1a; 一、智能优化算法概述 智能优化算法是一种搜索算法&#xff0c;旨在通过…

设置单实例Apache HTTP服务器

配置仓库 [rootlocalhost ~]# cd /etc/yum.repos.d/ [rootlocalhost yum.repos.d]# vi rpm.repo仓库代码&#xff1a; [BaseOS] nameBaseOS baseurl/mnt/BaseOS enabled1 gpgcheck0[AppStream] nameAppStream baseurl/mnt/AppStream enabled1 gpgcheck0挂载 [rootlocalhost …

2.4G无线收发芯片 XL2401D,SOP16封装,集成单片机,高性价比

XL2401D 芯片是工作在2.400~2.483GHz世界通用ISM频段&#xff0c;片内集成了九齐 NY8A054E单片机的SOC无线收发芯片。芯片集成射频收发机、频率收生器、晶体振荡器、调制解调器等功能模块&#xff0c;并且支持一对多组网和带ACK的通信模式。发射输出功率、工作频道以及通信数据…

网络基础:IS-IS协议

IS-IS&#xff08;Intermediate System to Intermediate System&#xff09;是一种链路状态路由协议&#xff0c;最初由 ISO&#xff08;International Organization for Standardization&#xff09;为 CLNS&#xff08;Connectionless Network Service&#xff09;网络设计。…

油猴脚本高级应用:拦截与修改网页Fetch请求实战指南

油猴脚本高级应用&#xff1a;拦截与修改网页Fetch请求实战指南 简介&#xff1a; 本文介绍了几个使用油猴&#xff08;Tampermonkey&#xff09;脚本拦截和修改网页 fetch 请求的案例。这些脚本可以在浏览器扩展油猴中运行&#xff0c;用于开发者调试网络请求或自定义页面行…

Vue 前端修改页面标题无需重新打包即可生效

在public文件夹下创建config.js文件 index.html页面修改 其他页面的标题都可以用window.title来引用就可以了&#xff01;

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【19】认证服务03—分布式下Session共享问题

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【19】分布式下Session共享问题 session原理分布式下session共享问题Session共享问题解决—session复制Session共享问题解决—客户端存储Session共享问题解决—hash一致性Session共享问题…

ASUS/华硕飞行堡垒8 FX506L FX706L系列 原厂win10系统 工厂文件 带F12 ASUS Recovery恢复

华硕工厂文件恢复系统 &#xff0c;安装结束后带隐藏分区&#xff0c;一键恢复&#xff0c;以及机器所有驱动软件。 系统版本&#xff1a;Windows10 原厂系统下载网址&#xff1a;http://www.bioxt.cn 需准备一个20G以上u盘进行恢复 请注意&#xff1a;仅支持以上型号专用…

域名、网页、HTTP概述

目录 域名 概念 域名空间结构 域名注册 网页 概念 网站 主页 域名 HTTP URL URN URI HTML 超链接 发布 HTML HTML的结构 静态网页 特点 动态网页 特点 Web HTTP HTTP方法 GET方法 POST方法 HTTP状态码 生产环境下常见的HTTP状态码 域名 概念 IP地…

基于.NET开源游戏框架MonoGame实现的开源项目合集

前言 今天分享一些基于.NET开源游戏框架MonoGame实现的开源项目合集。 MonoGame项目介绍 MonoGame是一个简单而强大的.NET框架&#xff0c;使用C#编程语言可以创建桌面PC、视频游戏机和移动设备游戏。它已成功用于创建《怒之铁拳4》、《食肉者》、《超凡蜘蛛侠》、《星露谷物…

【跟我学K8S】45天入门到熟练详细学习计划

目录 一、什么是K8S 核心功能 架构组件 使用场景 二、入门到熟练的学习计划 第一周&#xff1a;K8s基础和概念 第二周&#xff1a;核心对象和网络 第三周&#xff1a;进阶使用和管理 第四周&#xff1a;CI/CD集成和监控 第五周&#xff1a;实战模拟和案例分析 第六周…

XPointer 实例

XPointer 实例 1. 引言 XPointer 是一种用于定位 XML 文档中特定部分的语言。它是 XLink 的补充,允许用户在 XML 文档中创建链接,指向文档中的特定元素、属性或文本。XPointer 的强大之处在于其精确的定位能力,使得开发者能够创建更加丰富和动态的 XML 应用。 2. XPointe…

【Spring Boot】spring boot主启动类_内置服务

1、主启动类 1.1 定义与功能 Spring Boot的主启动类是一个特殊的Java类&#xff0c;用于启动Spring Boot应用程序。该类通常使用SpringBootApplication注解进行标注&#xff0c;这个注解是一个复合注解&#xff0c;包含SpringBootConfiguration、EnableAutoConfiguration和Co…

LRU Cache 双向链表以及STL list实现----面试常考

双向链表版本&#xff1a; #include <bits/stdc.h> using namespace std; struct Node{int key, value;Node* prev;Node* next;Node():key(0), value(0), prev(nullptr), next(nullptr){}Node(int k, int v):key(k), value(v), prev(nullptr), next(nullptr){} }; class…