Vue实践-ElementUI中Upload组件如何批量上传

news/2025/2/27 0:28:26/

ElementUI中Upload组件如何批量上传

首先就是upload组件

      <el-uploadclass="upload-demo"ref="uploadFile"name="filedatas":headers="importHeaders":action="uploadAdminHost":auto-upload="false"multiple><el-button slot="trigger" size="small" type="primary">选取博客文件</el-button><el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">提交到服务器</el-button></el-upload>

然后是上传逻辑,首先获取到upload组件上的dom,然后获取文件,上传地址和数据

    // 文件上传submitUpload() {let {uploadFiles, action, data} = this.$refs.uploadFile      this.uploadFiles({uploadFiles,data,action,success: (response) => {console.log(response)// 上传成功后,将里面的内容删除this.$refs.uploadFile.clearFiles();this.$refs.uploadPicture.clearFiles();},error: (error) => {console.log('失败了', error)}})},

下面封装了一个 uploadFiles 方法,这里uploadFiles 就可以是多文件,通过封装ajax方式

    /*** 自定义上传文件* @param fileList 文件列表* @param data 上传时附带的额外参数* @param url 上传的URL地址* @param success 成功回调* @param error 失败回调*/uploadFiles({uploadFiles, headers, data, action, success, error}) {let form = new FormData()// 文件对象uploadFiles.map(file => form.append("filedatas", file.raw))// 附件参数for (let key in data) {form.append(key, data[key])}let xhr = new XMLHttpRequest()// 异步请求xhr.open("post", action, true)// 设置请求头xhr.setRequestHeader("Authorization", getToken());xhr.onreadystatechange = function() {if (xhr.readyState == 4){if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304){success && success(xhr.responseText)} else {error && error(xhr.status)}}}xhr.send(form)}

最后后台接口,同时接受多个文件

    @PostMapping("/pictures")public Object uploadPics(HttpServletRequest request, List<MultipartFile> filedatas) {// 逻辑代码}

最后查看请求,会同时携带多个文件,并且返回多个上传成功的结果


http://www.ppmy.cn/news/1575120.html

相关文章

Mono里运行C#脚本43—System.Console.WriteLine()函数的生成过程

前面可以看到脚本里会有下面的代码生成: IL_0005: call void class [mscorlib]System.Console::WriteLine(string) 现在就来分析这行代码的JIT的生成过程。 在这里调用的代码是库里代码,与前面内部嵌入的函数会不一样。并且它是一个类里的方法,这样也与前面的内部函数不…

MFC—加法器

1.需要为编辑框添加变量 2.在cpp文件中的按钮中添加代码 void CMFCAddtionDlg::OnBnClickedButton1() {// TODO: 在此添加控件通知处理程序代码UpdateData(true);//把控件里的值更新给变量m_add m_add1 m_add2;//加法UpdateData(false);//把控件相加的值赋值给控件 }

【Leetcode 每日一题】1656. 设计有序流

问题背景 有 n n n 个 ( i d , v a l u e ) (id, value) (id,value) 对&#xff0c;其中 i d id id 是 1 1 1 到 n n n 之间的一个整数&#xff0c; v a l u e value value 是一个字符串。不存在 i d id id 相同的两个 ( i d , v a l u e ) (id, value) (id,value) 对。…

MacOS安装Emacs

个人博客地址&#xff1a;MacOS安装Emacs | 一张假钞的真实世界 在MacOS X上可以使用Homebrew 安装Emacs&#xff1a; $ brew install emacs --with-cocoa 或者用MacPorts&#xff1a; $ sudo port install emacs-app OSX Emacs 网站提供了通用的二进制包。 前两种方法安装…

使用 pytest-mock 进行 Python 高级单元测试与模拟

一、单元测试与模拟的意义 在软件开发中,单元测试用于验证代码逻辑的正确性。但实际项目中,代码常依赖外部服务(如数据库、API、文件系统)。直接测试这些依赖会导致: 测试速度变慢测试结果不可控产生副作用(如真实发送邮件)模拟(Mocking) 技术通过创建虚拟对象替代真…

环境安装与配置:全面了解 Go 语言的安装与设置

在学习 Go 语言之前&#xff0c;首先需要确保开发环境已正确安装和配置。本部分将详细介绍如何在不同平台&#xff08;Windows、macOS 和 Linux&#xff09;上安装 Go 语言&#xff0c;以及如何进行环境变量配置和工作空间的设置。 一、安装 Go 语言 1. Windows 安装方法 下载…

牛客周赛 Round 82(思维、差分、树状数组、大根堆、前后缀、递归)

文章目录 牛客周赛 Round 82&#xff08;思维、差分、树状数组、大根堆、前后缀、递归&#xff09;A. 夹心饼干B. C. 食堂大作战&#xff08;思维&#xff09;D. 小苯的排列计数(差分、树状数组)E. 和和&#xff08;大根堆&#xff0c;前缀和&#xff09;F. 怎么写线性SPJ &…

Java进阶学习笔记95——网络编程

什么是网络编程&#xff1f; 可以让设备中的程序与网络上的其他设备中的程序进行数据交互&#xff08;实现网络通信的&#xff09;。 Java提供了哪些网络编程的解决方案呢&#xff1f; 基本的通信架构&#xff1a; 基本的通信架构有2种形式&#xff1a;CS架构&#xff08;Cli…