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 相关文章推荐
javascript的对话框详解与参数
Mar 08 Javascript
判断多个元素(RADIO,CHECKBOX等)是否被选择的原理说明
Feb 18 Javascript
JQuery SELECT单选模拟jQuery.select.js
Nov 12 Javascript
使用js正则控制input标签只允许输入的值
Jul 29 Javascript
javascript中的window.location.search方法简介
Sep 02 Javascript
javascript实现促销倒计时+fixed固定在底部
Sep 18 Javascript
JavaScript中对循环语句的优化技巧深入探讨
Jun 06 Javascript
jquery获取radio值(单选组radio)
Oct 16 Javascript
jQuery中的ajax async同步和异步详解
Sep 29 Javascript
浅析Bootstrap验证控件的使用
Jun 23 Javascript
JSON与js对象序列化实例详解
Mar 16 Javascript
javascript之分片上传,断点续传的实际项目实现详解
Sep 05 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
谏山创故乡大分县日田市水坝将设立《进击的巨人》立艾伦、三笠以及阿尔敏的铜像!
2020/03/06 日漫
很实用的一个完整email发送程序
2006/10/09 PHP
项目中应用Redis+Php的场景
2016/05/22 PHP
PHP中new static()与new self()的比较
2016/08/19 PHP
php封装的验证码工具类完整实例
2016/10/19 PHP
浅谈PHP中new self()和new static()的区别
2017/08/11 PHP
使用jQuery的ajax功能实现的RSS Reader 代码
2009/09/03 Javascript
jQuery 属性选择器element[herf*='value']使用示例
2013/10/20 Javascript
从数组中随机取x条不重复数据的JS代码
2013/12/24 Javascript
ListBox实现上移,下移,左移,右移的简单实例
2014/02/13 Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
2014/05/28 Javascript
nodejs分页类代码分享
2014/06/17 NodeJs
超棒的响应式布局jQuery插件Freetile.js
2014/11/17 Javascript
laypage分页控件使用实例详解
2016/05/19 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
AngularJS中使用ngModal模态框实例
2017/05/27 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
2017/09/26 Javascript
简单实现vue验证码60秒倒计时功能
2017/10/11 Javascript
jQuery实现验证表单密码一致性及正则表达式验证邮箱、手机号的方法
2017/12/05 jQuery
微信小程序自定义音乐进度条的实例代码
2018/08/28 Javascript
Python中Django框架下的staticfiles使用简介
2015/05/30 Python
Python之批量创建文件的实例讲解
2018/05/10 Python
Python Socket TCP双端聊天功能实现过程详解
2020/06/15 Python
python3字符串输出常见面试题总结
2020/12/01 Python
详解Python中的Lock和Rlock
2021/01/26 Python
MANGO官方网站:西班牙芒果服装品牌
2017/01/15 全球购物
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
Nordgreen台湾官网:极简北欧设计手表
2019/08/21 全球购物
欧洲最大的预定车位市场:JustPark
2020/01/06 全球购物
商场促销活动方案
2014/02/08 职场文书
医务人员医德考评自我评价
2015/03/03 职场文书
留学推荐信怎么写
2015/03/26 职场文书
机械生产实习心得体会
2016/01/22 职场文书
升职感谢领导的话语及升职感谢信
2019/06/24 职场文书
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL