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 相关文章推荐
清空上传控件input file的值
Jul 03 Javascript
基于JQuery的简单实现折叠菜单代码
Sep 15 Javascript
理解Javascript_13_执行模型详解
Oct 20 Javascript
javascript 获取模态窗口的滚动位置代码
Aug 06 Javascript
收集json解析的四种方法分享
Jan 17 Javascript
jquery实现页面图片等比例放大缩小功能
Feb 12 Javascript
js检测iframe是否加载完成的方法
Nov 26 Javascript
JS解析url查询参数的简单代码
Aug 06 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
Feb 22 Javascript
vue中使用echarts制作圆环图的实例代码
Jul 27 Javascript
node.js连接mysql与基本用法示例
Jan 05 Javascript
react 不用插件实现数字滚动的效果示例
Apr 14 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
Excel数据导入Mysql数据库的实现代码
2008/06/05 PHP
php中取得文件的后缀名?
2012/02/20 PHP
php中检查文件或目录是否存在的代码小结
2012/10/22 PHP
php中smarty区域循环的方法
2015/06/11 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
2018/04/30 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
2019/10/08 PHP
判断用户是否在线的代码
2011/03/05 Javascript
JS判断文本框内容改变事件的简单实例
2014/03/07 Javascript
js实现div闪烁原理及实现代码
2014/06/24 Javascript
js读取cookie方法总结
2014/10/31 Javascript
在JavaScript中使用对数Math.log()方法的教程
2015/06/15 Javascript
javascript中apply、call和bind的使用区别
2016/04/05 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
基于jquery插件编写countdown计时器
2016/06/12 Javascript
Backbone View 之间通信的三种方式
2016/08/09 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
将鼠标焦点定位到文本框最后(代码分享)
2017/01/11 Javascript
详解React中传入组件的props改变时更新组件的几种实现方法
2018/09/13 Javascript
vue如何进行动画的封装
2018/09/26 Javascript
vue项目前端知识点整理【收藏】
2019/05/13 Javascript
vue实现折线图 可按时间查询
2020/08/21 Javascript
[03:15]DOTA2-DPC中国联赛1月22日Recap集锦
2021/03/11 DOTA
python脚本实现验证码识别
2018/06/07 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
python web框架 django wsgi原理解析
2019/08/20 Python
Python with语句和过程抽取思想
2019/12/23 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
Pycharm无法打开双击没反应的问题及解决方案
2020/08/17 Python
Pycharm的Available Packages为空的解决方法
2020/09/18 Python
匡威帆布鞋美国官网:Converse美国
2016/08/22 全球购物
洲际酒店集团美国官网:IHG美国
2017/11/16 全球购物
美国体育用品商店:Academy Sports + Outdoors
2020/01/04 全球购物
SQL Server面试题
2016/10/17 面试题
公司会计岗位职责
2014/02/13 职场文书
财政专业求职信范文
2014/02/19 职场文书
QQ空间主人寄语大全
2014/04/12 职场文书