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 相关文章推荐
利用JS延迟加载百度分享代码,提高网页速度
Jul 01 Javascript
查看大图功能代码jquery版
Nov 05 Javascript
jquery中$.post()方法的简单实例
Feb 04 Javascript
用循环或if语句从json中取数据示例
Aug 18 Javascript
jquery制作属于自己的select自定义样式
Nov 23 Javascript
Bootstrap基本插件学习笔记之折叠(22)
Dec 08 Javascript
bootstrap为水平排列的表单和内联表单设置可选的图标
Feb 15 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
Apr 05 Javascript
node作为中间服务层如何发送请求(发送请求的实现方法详解)
Jan 02 Javascript
vuex 使用文档小结篇
Jan 11 Javascript
修改node.js默认的npm安装目录实例
May 15 Javascript
图文详解vue框架安装步骤
Feb 12 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
使用array mutisort 实现按某字段对数据排序
2013/06/18 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
2014/12/18 PHP
Laravel中注册Facades的步骤详解
2016/03/16 PHP
Yii2如何批量添加数据
2016/05/17 PHP
PHP怎样用正则抓取页面中的网址
2016/08/09 PHP
php中替换字符串函数strtr()和str_repalce()的用法与区别
2016/11/25 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
JQuery控制radio选中和不选中方法总结
2015/04/15 Javascript
简介JavaScript中getUTCMonth()方法的使用
2015/06/10 Javascript
纯javascript代码实现计算器功能(三种方法)
2015/09/07 Javascript
jQuery实现的模拟弹出窗口功能示例
2016/11/24 Javascript
简单谈谈require模块化jquery和angular的问题
2017/06/23 jQuery
vue实现标签云效果的方法详解
2019/08/28 Javascript
Vue form表单动态添加组件实战案例
2019/09/02 Javascript
layer.confirm()右边按钮实现href的例子
2019/09/27 Javascript
wxpython 学习笔记 第一天
2009/02/09 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
django的登录注册系统的示例代码
2018/05/14 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
2019/05/27 Python
python 含子图的gif生成时内存溢出的方法
2019/07/07 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
2019/08/21 Python
python 类的继承 实例方法.静态方法.类方法的代码解析
2019/08/23 Python
Python&amp;&amp;GDAL实现NDVI的计算方式
2020/01/09 Python
在python里使用await关键字来等另外一个协程的实例
2020/05/04 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
2020/06/17 Python
详解matplotlib绘图样式(style)初探
2021/02/03 Python
莫斯科隐形眼镜网上商店:Linzi
2019/07/22 全球购物
如何在发生故障的节点上重新安装 SQL Server
2013/03/14 面试题
应届优秀本科大学毕业生自我鉴定
2014/01/21 职场文书
师德标兵事迹材料
2014/12/19 职场文书
党建工作目标管理责任书
2015/01/29 职场文书
三傻大闹宝莱坞观后感
2015/06/03 职场文书
创业计划书介绍
2019/04/24 职场文书
手把手教你怎么用Python实现zip文件密码的破解
2021/05/27 Python