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

Vue文件上传实战指南

Vue上传文件 示例

  • 定义元素 使用原生标签 input
    • 设置文件上传监听事件
    • 代码主动触发上传文件操作
    • 获取到文件后调用api 上传

定义元素 使用原生标签 input

定义了ref 属性,方便引用;使用了v-show 属性默认不显示,定义了type 属性为file 表示上传文件;定义了id 属性 fileInput ; 定义了multiple 支持多选文件上传;定义了accept 属性 从而限制上传的文件类型,但此种方式不能完全避免,还必须加以js 逻辑判断拦截

<inputv-show="false"ref="uploadRef"type="file"id="fileInput"multipleaccept=".doc,.docx,.md,.txt" />

设置文件上传监听事件

  1. 先获取到元素 fileInput
  2. 对元素进行change事件监听
  3. 获取目标元素的event.target.files
  4. 对符合条件的文件扩展名进行匹配,判断,拦截不符合要求的文件,并提示
const fileInput = document.querySelector("#fileInput");fileInput.addEventListener("change", event => {const files = event.target.files;const allowedExtensions = ['md', 'doc', 'docx', 'txt'];const filteredFiles = Array.from(files).filter(file => {const ext = file.name.split('.').pop().toLowerCase();return allowedExtensions.includes(ext);});if (filteredFiles.length === 0) return this.$message.warning('只能上传.doc,.docx,.md,.txt类型的文件')else this.uploadFile(files)});

代码主动触发上传文件操作

1.清空文件对象的value

// 选择文件this.$refs.uploadRef.value = ''this.$refs.uploadRef.click()

获取到文件后调用api 上传

  1. FormData 文件上传
const formData = new FormData();
Array.from(files).forEach(file => {formData.append("files", file);});APIRequest.uploadRequest({projectId: this.row.id || 0,formData,}).then((res) => {if (res.code == 200) {this.$message.success('上传成功')this.fresh()} else {this.$message.error(res.message || `请求出错`)}})
http://www.dtcms.com/a/277400.html

相关文章:

  • 深入理解 Linux 文件系统层级结构
  • Python 数据挖掘之数据探索
  • CCS-MSPM0G3507-7-模块篇-MPU6050的基本使用
  • Spring Boot 安全登录系统:前后端分离实现
  • MYSQL笔记1
  • 黑马点评系列问题之p63unlock.lua不知道怎么整
  • 嵌入式单片机开发 - Keil MDK 自定义 Output 与 Listing 输出
  • EtherCAT开源主站 SOEM 2.0 最新源码在嵌入式 Linux 下的移植与编译
  • 2025.7.13总结
  • 欧拉系统安装UKUI桌面环境
  • 无缝衔接直播流体验
  • Git Commit Message写错后如何修改?已Push的提交如何安全修复?
  • C#单例模式管理全局变量
  • 格密码–SIS问题,ISIS问题及nf-ISIS问题
  • linux中at命令的常用用法。
  • 基于关联规则优化的个性化推荐系统
  • 本地部署开源的网盘聚合工具 OpenList 并实现外部访问(Windows 版本)
  • LLM大模型微调技术全景:从IFT、SFT到RLHF、DPO与PPO强化学习
  • Python 协程(终止协程和异常处理)
  • 晋升指南-笔记
  • 登录模块的静态登录
  • 基于Redis Streams的实时消息处理实战经验分享
  • 2025湖北省信息安全管理与评估赛项一阶段技能书
  • 当外卖骑手遇上“爽提学院”:一场关于专业的蜕变
  • 电商系统未来三年趋势:体验升级、技术赋能与模式重构
  • 海豚远程控制APP:随时随地,轻松掌控手机
  • 强化学习 (11)随机近似
  • 串口A和S的含义以及RT的含义
  • 大众点评商业模式:从内容护城河到竞争熔炉
  • MYSQL数据库----DCL语句