现在前端基本不是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. DNS之缓存服务器部署流程

    环境介绍 [root@dns ~]# cat /etc/centos-releaseCentOS release 6.6 (Final)[root@dns ~]# ifconfig eth0|sed ...

  2. Django之用户认证auth模块使用

    Auth认证模块 执行数据库迁移的那两条命令时,即使我们没有建表,django是不是也会创建好多张表?我们创建之后去看一下里面的一个叫auth_user表,既然是表,那肯定应该有对应的操作改表的方法 ...

  3. linux 环境 安装jdk tomcat mysql git

    1.安装JDK 1.官方下载jdk,linux版本的rpm包 2.安装rz sz ----------编译安装 //安装 cd /tmp wget http://www.ohse.de/uwe/rel ...

  4. OVS实现VXLAN隔离

    一.实验环境 1.准备3个CentOS7 mini版本的虚拟机,每个主机3个网卡.如图: 图中OVS-1.OVS-2.OVS-3分别为三台CentOS7 mini版虚拟机,分别配备3个虚拟网卡.如图中 ...

  5. Storm 学习之路(八)—— Storm集成HDFS和HBase

    一.Storm集成HDFS 1.1 项目结构 本用例源码下载地址:storm-hdfs-integration 1.2 项目主要依赖 项目主要依赖如下,有两个地方需要注意: 这里由于我服务器上安装的是 ...

  6. 【Mysql】细节补充,约束、索引等

    约束: 显示建表语句:show create table 表名 查询表中的约束:SELECT * FROM information_schema.`TABLE_CONSTRAINTS`  where ...

  7. bitmap-如何判断某个整数是否存在40亿个整数中?

    有这样一道面试题:现有40亿个整数,如果再给定一个新的整数,怎么判断这个整数是否在这40亿个整数中? 你可能首先会想到用一个set存储,那个新数只需判断是否在set中.但是如果用set存储的话,如果一 ...

  8. Maven版本管理-Maven Release Plugin插件

    一.什么是版本管理 首先,这里说的版本管理(version management)不是指版本控制(version control),但是本文假设你拥有基本的版本控制的知识,了解subversion的基 ...

  9. Linux使用socks代理

    安装一些依赖 yum install epel-release yum install python-pip python-devel gcc gcc-c++ cmake git 安装shadowso ...

  10. Confluence5.6.6安装和破解

    1.安装confluence 1. 软件环境说明 # 安装 jdk [root@wiki_5-- jar]# cat /etc/redhat-release CentOS Linux release ...