现在前端基本不是vue技术栈就是react技术栈。

vue技术栈最常用的就是element-ui的ui框架了。

在项目中,我们经常会碰到这种需求:批量上传文件

element-ui 确实也为我们提供了<el-upload>这样的组件,同事也暴露了很多的属性和方法供我们使用。

但是很多人却碰到了这样的问题:项目需求是批量上传,但是为什么自己上传的时候,也成功了,但是却是一张一张上传的,这种上传方式有时候并不违背我们的需求,但有时又不是我们需要的。那么,怎么解决批量上传并携带参数呢,我这里写了一个demo,

可供大家参考:

 <template>
<div>
<el-form>
<el-form-item>
<el-upload
ref="upload"
action="/as"
multiple
:http-request="handleUpload"
:auto-upload="false"
:limit="20">
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handlePush">发布</el-button>
</el-form-item>
</el-form> </div>
</template>
<script>
import axios from 'axios'
import { mapGetters } from 'vuex'
export default{
data() {
return {
files:[]
};
},
computed:{
...mapGetters([
'taxno',
'username'
])
},
methods: {
handleUpload(raw){
this.files.push(raw.file);
},
async handlePush(){
this.$refs.upload.submit() // 这里是执行文件上传的函数,其实也就是获取我们要上传的文件
let fd = new FormData();
fd.append('operator',this.username)
fd.append('reimment',"倪楚楚")
fd.append('deptname',"技术部")
fd.append('taxno',this.taxno)
this.files.forEach(function (file) {
fd.append('file', file, file.name); // 因为要上传多个文件,所以需要遍历一下才行
//不要直接使用我们的文件数组进行上传,你会发现传给后台的是两个Object
})
axios.post(process.env.BASE_API+'/file/moreFileUpload',fd).then(res=>{
if(res.data.status==='OK'){
console.log(res)
}
})
}
}
}
</script>

因为<el-upload>的action属性是必须的,所以如果不用默认上传,这里随便设置一个字符串就可以了。

如果对携带的参数做校验,可以用表单校验。当校验通过了再调上传的接口就可以了。

希望这篇文章对你有所帮助!

转载请注明出处:砌墙的砖  博客园  2019-07-30 《vue中el-upload上传多图片且携带参数,批量而不是一张一张的解决方案》

vue中el-upload上传多图片且携带参数,批量而不是一张一张的解决方案的更多相关文章

  1. POST请求上传多张图片并携带参数

    POST请求上传多张图片并携带参数 在iOS中,用POST请求携带参数上传图片是非常恶心的事情,HTTPBody部分完全需要我们自己来配置,这个HTTPBody分为3个部分,头部分可以携带参数,中间部 ...

  2. vue中element 的上传功能

    element 的上传功能 最近有个需求,需要在上传文件前,可以进行弹窗控制是否上传upload 看完文档后,感觉有两种思路可以实现 基于before-upload :上传文件之前的钩子,参数为上传的 ...

  3. vue中的文件上传和下载

    文件上传 vue中的文件上传主要分为两步:前台获取到文件和提交到后台 获取文件 前台获取文件,主要是采用input框来实现 <el-dialog :title="addName&quo ...

  4. 封装Vue Element的upload上传组件

    本来昨天就想分享封装的这个upload组件,结果刚写了两句话,就被边上的同事给偷窥上了,于是在我全神贯注地写分享的时候他就神不知鬼不觉地突然移动到我身边,腆着脸问我在干啥呢.卧槽你妈,当场就把我吓了一 ...

  5. Vue中删除重复上传的文件

    上传控件: <el-upload class="upload-demo"  :on-change="filesChange"> filesChang ...

  6. ivew Upload 上传时附带的额外参数

    <Upload action="/api/device/importData" :data="uploadData" :before-upload=&qu ...

  7. MVC应用程序显示上传的图片

    MVC应用程序显示上传的图片 前两篇<MVC应用程序实现上传文件>http://www.cnblogs.com/insus/p/3590907.html和<MVC应用程序实现上传文件 ...

  8. 页面中使用多个element-ui upload上传组件时绑定对应元素

    elemet-ui里提供的upload文件上传组件,功能很强大,能满足单独使用的需求,但是有时候会存在多次复用上传组件的需求,如下图的样子,这时候就出现了问题,页面上有多个上传组件时,要怎么操作呢? ...

  9. vue : 检测用户上传的图片的宽高

    需求: 用户可上传3-6张图片(第 1 2 3 张必须传),上传的图片必须是540 * 330 像素. 第一步,获取上传的图片的宽高. 初始化一个对象数组,宽高均设为0. 如果用户上传的图片没有上限, ...

随机推荐

  1. Spring Boot 集成配置 HTTPS

    这是泥瓦匠的第108篇原创 文章工程: * JDK 1.8 * Maven 3.5.2 * Spring Boot 1.5.9.RELEASE ## 一.HTTPS 是什么 问:什么是HTTP? 答: ...

  2. VB程序逆向常用的函数

    本文转载!!! 原文地址:http://www.cnblogs.com/bbdxf/p/3780187.html 1) 数据类型转换: a) __vbaI2Str    将一个字符串转为8 位(1个字 ...

  3. 网关never_host设计

    never下app的host与api Never是纯c#语言开发的一个框架.host则是使用该框架开发出来的API网关,它包括了:路由.认证.鉴权.熔断,内置了负载均衡器Deployment:并且只需 ...

  4. spring boot + druid + mybatis + atomikos 多数据源配置 并支持分布式事务

    文章目录 一.综述 1.1 项目说明 1.2 项目结构 二.配置多数据源并支持分布式事务 2.1 导入基本依赖 2.2 在yml中配置多数据源信息 2.3 进行多数据源的配置 三.整合结果测试 3.1 ...

  5. Java NIO 学习笔记(三)----Selector

    目录: Java NIO 学习笔记(一)----概述,Channel/Buffer Java NIO 学习笔记(二)----聚集和分散,通道到通道 Java NIO 学习笔记(三)----Select ...

  6. Ubuntu 16.04.3启动MySQL报错

    今天安装mysql,连接MySQL时报错mysql: [Warning] Using a password on the command line interface can be insecure. ...

  7. Python开发【第九篇】: 并发编程

    内容概要 操作系统介绍 进程 线程 协程 二. 进程 python并发编程之多进程理论部分 在python程序中的进程操作 运行中的程序就是一个进程.所有的进程都是通过它的父进程来创建的.因此,运行起 ...

  8. OSI参考模型---网络基础篇(1)

    什么是网络 网络就是将分布在不同地理位置,具有独立功能的终端(一切联网的设备都叫终端:例如电脑,手机,智能家电等等联网的设备),通过通信线路(双绞线.光纤.电话线等等)和通信设备(例如:交换机.路由器 ...

  9. SQL注入与防御

    SQL注入与防御 下载:https://pan.baidu.com/s/1ZiLVY2IxHXD9-bMRS61Fzg 提取码:yof2

  10. 找不到 main 方法

    前几天打开了好久不用的eclipse,发现报了个奇怪的错误 ***中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args) ...