原生input实现上传文件以及文件夹

2023-11-18

最近接到了一个上传文件和文件夹的需求,考虑了一下打算用原生的input来实现上传文件,话不多说直接上代码。

**1.html部分

<input
        type="file"
        id=""
        value=""
        name="saveFile"
        multiple
        :webkitdirectory="flagWebkitdirectory"
        @change="tirggerFile($event)"
      />

input类型选择为file类型,multiple属性是可以多选文件,webkitdirectory属性是可以上传文件夹,这里我是用来一个值来判断上传文件还是文件夹。

2.js部分
在tirggerFile事件中,可以拿到一个event的事件对象

let file = event.target.files

因为后端接受的是文件流的形式,所以也是用到了formdata这种传参方式
在这里插入图片描述
定义一个formdata的对象

let formData = new FormData()

这里是对于文件流的追加

for (let i = 0; i < file.length; i++) {
        if (this.flagWebkitdirectory) {
        //如果是文件夹
          formData.append('files', file[i], file[i].webkitRelativePath)
        } else {
        //如果不是文件夹
          formData.append('files', file[i], file[i].name)
        }
      }

因为event.target.files拿到的是一个文件列表,并不是一个数组,所以这里用到了for循环来追加参数,file.name拿到的是文件的名称➕类型,例如a.jpg,file.webkitRelativePath拿到的是文件夹/文件名称+类型,我这里是传了个名称为a的文件夹以及文件夹下面dog.png的图片。
在这里插入图片描述
因为后端要求,如果是上传文件就需要传name,如果是文件夹和附属的文件就需要传webkitRelativePath。
在这里插入图片描述
最后将formdata放进请求接口中,就可以上传成功了。
有什么不懂的或者建议欢迎评论区留言哦

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

原生input实现上传文件以及文件夹 的相关文章

随机推荐

  • win10+pytorch(gpu)下载安装中踩的坑,下载安装全流程

    整个下载安装的流程如下 1 查看自己的电脑显卡是否支持gpu 具体查看方式可以参考我的这一篇文章 CUDA cuDNN下载安装 配备GPU环境 九九19496的博客 CSDN博客 但先不要下载cuda和cudnn 2 确定自己想要的pyto
  • TCP流式服务的粘包问题及解决方法

    TCP流式服务的粘包问题 有可能将两次send的内容合并在一起被接受端收到 解决方法 发送定长包 包层加入 r n标记 FTP协议就是这么做的 但这种方案存在的问题就是 如果数据正文存在同样的字符 就会被误判为消息的边界 包头加上包体长度
  • requery与ajax,总结一下query中ajax的几种方法

    1 a中比需抖接朋功要朋插jax ajax type POST 提交数据的类型 POST GET url testLogin aspx 提交的网址 提交的数据 data Name sanmao Password sanmaoword 返回数
  • 职高计算机班主任工作计划,教学工作计划:高职班主任工作计划

    作为高职院校各专业的班主任 面临着教学理念和班级管理双重压力 高职班主任工作计划不仅要从学生学习上进行合理计划 更要从学生思想教育上进行计划 以下是小编整理的高职班主任工作计划 欢迎大家参阅 高职班主任工作计划 装潢专业 经过一年半的锻炼与
  • java对list集合进行分页

    1 计算页数 List
  • CAN总线之错误检测以及错误状态简介

    CAN总线之错误检测以及错误状态简介 1 CAN错误检测特点简介 1 1错误检测机制 2 错误 2 1错误状态的种类 本文参考瑞萨的 CAN总线入门 周立功的 现场总线CANopen设计与应用 1 CAN错误检测特点简介 错误检测是CAN的
  • java发邮件

    1 设置邮箱smtp服务 获取第三方授权码 mailHost smtp 163 com mailFrom xxx 163 com mailUser xxx mailPassword xxxpassword 主题 StringBuffer s
  • 本土化的ChromeOS-系统推荐

    系统推荐 今天推荐一个本土化的ChromeOS 可以安装安卓软件和Play商店的软件 不需要拥有谷歌账号即可使用 只需要创建fydeOS的账号就可以了 相比起其它的第三方ChromeOS操作系统 它开放的东西更多 官方也有适配一些第三方设备
  • STM32速成笔记—Flash闪存

    文章目录 一 Flash简介 二 STM32F1的Flash 三 Flash操作步骤 四 程序设计 4 1 读取数据 4 2 写入数据 不检查 4 3 写入数据 检查 五 注意事项 一 Flash简介 快闪存储器 flash memory
  • 2023前端面试题及答案整理(JS面试题)

    ES6 let const 全局作用域中 用 const 和 let 声明的变量不在 window 上 那到底在哪里 如何去获取 ES6规定 var 命令和 function 命令声明的全局变量 依旧是顶层对象的属性 但 let const
  • Python数据结构与算法分析 第五章 搜索和排序

    有序列表的顺序搜索 二分查找 二分搜索 sou 17 18 22 28 38 78 89 99 100 def binarysearch list item first 0 last len list 1 while first lt la
  • linux环境下网卡重启

    网卡重启命令 sudo service network restart 但在有的linux版本中会出现network unrecognized service 我们可以换个网络重启命令就可以了 sudo service network ma
  • 100天精通Python(基础篇)——第5天:基础语句

    作者介绍 Python领域优质创作者 数据开发工程师 励志成为Python全栈工程师 关注我发现更多精彩 本文已收录于Python全栈系列专栏 100天精通Python从入门到就业 欢迎订阅 订阅后可私聊进Python全栈VIP交流群 手把
  • 激发创造力!如何轻松录制PPT和人像视频

    大家好 作为一个追求创意的人 你是否曾经遇到过想要一边讲PPT一边录制视频 或者同时录制PPT和人像的困扰 别担心 我来给你分享一些简单而有趣的方法 首先 我们可以利用PPT自带的屏幕录制功能来实现一边讲PPT一边录制视频的需求 只需点击
  • Python运算符列表

    Python运算符列表 运算符 描述 x y x y 加 减 号可重载为连接符 x y x y x y x y 相乘 求平方 相除 求余 号可重载为重复 号可重载为格式化 lt lt gt gt lt gt 比较运算符 lt lt gt g
  • 亚马逊秋季促销指南——如何更好的利用促销?

    最新消息 亚马逊官方宣布将会在10月份举行Prime会员大促 覆盖多个站点 亚马逊卖家们一定要抓住这波促销机会 在这个秋季再冲一把 但是还有一些小白玩家可能对于亚马逊促销了解不够 那么接下来我要讲的这些准备工作 你要看完哦 一 促销工具 首
  • TensorFlow的随机张量(Random Tensors)

    随机张量 Random Tensors TensorFlow有几种操作可以创建具有不同分布的随机张量 随机操作是有状态的 每次评估时都会创建新的随机值 与变量不同 随机张量在运行前不再需要显式初始化 tf random normal tf
  • flink-connector-jdbc_2.12 简介、中文文档、中英对照文档 下载

    flink connector jdbc 2 12 文档 下载链接 含jar包 源码 pom 组件名称 中文 文档 下载链接 中英对照 文档 下载链接 flink connector jdbc 2 12 1 14 3 jar flink c
  • Oracle数据库管理-ORA-12542 TNS 地址已被占用

    今日客户数据库连接报错 在使用plsql进行数据库连接时出现如下报错信息 ORA 12542 TNS 地址已被占用 问题排查 1 使用其他服务器客户端连接数据库正常 2 只有这一台机器连接数据库异常 查询相关的metalink文档发现如下
  • 原生input实现上传文件以及文件夹

    最近接到了一个上传文件和文件夹的需求 考虑了一下打算用原生的input来实现上传文件 话不多说直接上代码 1 html部分