element-ui upload组件多文件上传的示例代码


Posted in Javascript onOctober 17, 2018

之前有一篇写的如何同时传递form表单及upload组件文件,如果有多个upload文件该如何传递呢

上代码

html

<el-form ref="newform" :model="newform" :rules="rules">
    <el-form-item prop="expName" label="">
     <el-input v-model="newform.expName" placeholder="" style="width:75%">
     </el-input>
    </el-form-item>
    <el-form-item prop="expSn" label="">
     <el-input v-model="newform.expSn" placeholder="" style="width:75%">
     </el-input>
    </el-form-item>
    <el-form-item label='' prop="groupName">
     <el-select v-model="newform.groupName" placeholder="" style="width:75%" @change="newSelectGroup($event)">
      <el-option
      v-for="item in groupOptions"
      :key="item.groupId"
      :label="item.groupName"
      :value="item.groupId">
      </el-option>
     </el-select>
    </el-form-item>
    <el-form-item label="" prop="subGroupName">
     <el-select v-model="newform.subGroupName" placeholder="" style="width:75%" @change="newSelectSubGroup($event)">
      <el-option
      v-for="item in subGroupOptions"
      :key="item.subGroupId"
      :label="item.subGroupName"
      :value="item.subGroupId">
      </el-option>
     </el-select>
    </el-form-item>
    <el-form-item label="" prop="expvmDifficulty">
     <el-rate v-model="newform.expvmDifficulty" :max="5" style="line-height: 2;"></el-rate>
    </el-form-item>
    <el-form-item label="" prop="expvmInstruction">
     <el-upload
      class="upload-demo"
      drag
      ref="uploadhtml"
      :action="upload_url"
      :auto-upload="false"
      :before-upload="newHtml"
      accept=".html, .htm">
      <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
      <div slot="tip" class="el-upload__tip">实验信息上传,只能传(.html/.htm)文件</div>
     </el-upload>
    </el-form-item>
    <el-form-item label="" prop="expvmFiles">
     <el-upload
      class="upload-demo"
      drag
      ref="uploadfile"
      :action="upload_url"
      :auto-upload="false"
      :before-upload="newFiles"
      multiple>
      <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
      <div slot="tip" class="el-upload__tip">实验信息附件上传,只能传(.file)文件</div>
     </el-upload>
    </el-form-item>
    <el-form-item label="" prop="expvmVideo">
     <el-upload
      class="upload-demo"
      drag
      ref="uploadvideo"
      :action="upload_url"
      :auto-upload="false"
      :before-upload="newVideo"
      accept=".mp4">
      <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
      <div slot="tip" class="el-upload__tip">实验视频上传,只能传(.mp4)文件</div>
     </el-upload>
    </el-form-item>
    <el-form-item style="text-align:center">
     <el-button type="primary" @click="newSubmitForm()" class="yes-btn">
     确 定
     </el-button>
     <el-button @click="resetForm('newform')">
     重 置
     </el-button>
    </el-form-item>
   </el-form>

js

data () {
  return {
  upload_url: 'aaa',    // 随便填一个,但一定要有

  uploadForm: new FormData(),  // 一个formdata
   rules: {},   // 用到的规则
   newform: {
    expName: '',
    groupName: '',
    expSn: '',
    subGroupName: '',
    expvmDifficulty: 1
   }
  }
 }

methods

newSubmitForm () {
   this.$refs['newform'].validate((valid) => {
    if (valid) {
     this.uploadForm.append('expName', this.newform.expName)
     this.uploadForm.append('expSn', this.newform.expSn)
     this.uploadForm.append('groupId', this.newgroupId)
     this.uploadForm.append('subGroupId', this.newsubgroupId)
     this.uploadForm.append('expvmDifficulty', this.newform.expvmDifficulty)
     
     newExp(this.uploadForm).then(res => {
      if (res.code === 400) {
       this.$message.error(res.error)
      } else if (res.code === 200) {
       this.$message.success('上传成功!')
      
      }
     })
     this.$refs.uploadhtml.submit()  // 提交时触发了before-upload函数
     this.$refs.uploadfile.submit()
     this.$refs.uploadvideo.submit()
     
    } else {
     console.log('error submit!!')
     return false
    }
   })
  },
  newHtml (file) {  // before-upload
   this.uploadForm.append('html', file)
   return false
  },
  newFiles (file) {
   this.uploadForm.append('file[]', file)
   return false
  },
  newVideo (file) {
   this.uploadForm.append('video', file)
   return false
  }
newExp函数是作为一个前后端交互的函数
export function newExp (data) {
 return axios({
  method: 'post', // 方式一定是post
  url: '你的后台接收函数路径',
  timeout: 20000,
  data: data    // 参数需要是单一的formData形式
 })
}

PHP代码,后台接收

public function newExp() {
   $param = $this->request->post();     // 获取页面表单传值
   $files = $this->request->file();     // 接收到的文件
 }

注意

this.uploadForm.append('file[]', file)

这里是接收多文件一定要是数组形式的file[]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
PNGHandler-借助JS让PNG图在IE下实现透明(包括背景图)
Aug 31 Javascript
javascript 点击整页变灰的效果(可做退出效果)。
Jan 09 Javascript
js操作select控件的几种方法
Jun 02 Javascript
javascript放大镜效果的简单实现
Dec 09 Javascript
jquery中对于批量deferred的处理方法
Jan 22 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
Jun 15 Javascript
浅析javascript中函数声明和函数表达式的区别
Feb 15 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
Jan 26 Javascript
jquery实现页面常用的返回顶部效果
Mar 04 Javascript
使用Curl命令查看请求响应时间方法
Nov 04 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
Aug 28 Javascript
vue 手机物理监听键+退出提示代码
Sep 09 Javascript
bootstrap table合并行数据并居中对齐效果
Oct 17 #Javascript
IE9 elementUI文件上传的问题解决
Oct 17 #Javascript
vue src动态加载请求获取图片的方法
Oct 17 #Javascript
node实现分片下载的示例代码
Oct 17 #Javascript
在小程序开发中使用npm的方法
Oct 17 #Javascript
浅谈HTTP 缓存的那些事儿
Oct 17 #Javascript
使用angular-cli webpack创建多个包的方法
Oct 16 #Javascript
You might like
在“咖啡之国”感受咖啡文化
2021/03/03 咖啡文化
mysqli_set_charset和SET NAMES使用抉择及优劣分析
2013/01/13 PHP
php curl的深入解析
2013/06/02 PHP
提高PHP编程效率的方法
2013/11/07 PHP
php jsonp单引号转义
2014/11/23 PHP
php常用正则函数实例小结
2016/12/29 PHP
jquery插件之easing 动态菜单
2010/08/21 Javascript
JSON传递bool类型数据的处理方式介绍
2013/09/18 Javascript
jQuery无刷新分页完整实例代码
2015/10/27 Javascript
jQuery实现点击水纹波动动画
2016/04/10 Javascript
jQuery Mobile页面返回不需要重新get
2016/04/26 Javascript
jquery使用on绑定a标签无效 只能用live解决
2016/06/02 Javascript
EasyUI加载完Html内容样式渲染完成后显示
2016/07/25 Javascript
Bootstrap幻灯片轮播图支持触屏左右手势滑动的实现方法
2016/10/13 Javascript
Vue中如何实现轮播图的示例代码
2017/07/27 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
2019/06/17 Javascript
JS window对象简单操作完整示例
2020/01/14 Javascript
原生js实现的观察者和订阅者模式简单示例
2020/04/18 Javascript
javascript贪吃蛇游戏设计与实现
2020/09/17 Javascript
python获取当前运行函数名称的方法实例代码
2017/04/06 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
python反转列表的三种方式解析
2019/11/08 Python
python定义具名元组实例操作
2021/02/28 Python
澳大利亚相机之家:Camera House
2017/11/30 全球购物
Deichmann英国:德国鞋类零售商
2021/01/30 全球购物
构造方法和其他方法的区别?怎么调用父类的构造方法
2013/09/22 面试题
房地产管理毕业生自荐信
2013/11/04 职场文书
弘扬雷锋精神活动演讲稿
2014/03/04 职场文书
2014年预备党员学习两会心得体会
2014/03/17 职场文书
查摆问题自查报告范文
2014/10/13 职场文书
党员身份证明材料
2015/06/19 职场文书
血轮眼轮回眼特效 html+css
2021/03/31 HTML / CSS
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
2021/04/01 PHP
Go语言中break label与goto label的区别
2021/04/28 Golang
PyTorch梯度裁剪避免训练loss nan的操作
2021/05/24 Python
分享几种python 变量合并方法
2022/03/20 Python