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 06 Javascript
js 调用父窗口的具体实现代码
Jul 15 Javascript
JavaScript中对循环语句的优化技巧深入探讨
Jun 06 Javascript
jquery调取json数据实现省市级联的方法
Jan 29 Javascript
使用Ajax生成的Excel文件并下载的实例
Nov 21 Javascript
Ajax实现不刷新取最新商品
Mar 01 Javascript
详解js几个绕不开的事件兼容写法
Aug 30 Javascript
Vue自定义指令封装节流函数的方法示例
Jul 09 Javascript
React中使用外部样式的3种方式(小结)
May 28 Javascript
小程序实现上下移动切换位置
Sep 23 Javascript
修改Vue打包后的默认文件名操作
Aug 12 Javascript
Vue实现开关按钮拖拽效果
Sep 22 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
PHP中将ip地址转成十进制数的两种实用方法
2013/08/15 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
2015/01/07 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
2016/11/14 PHP
php设计模式之工厂模式用法经典实例分析
2019/09/20 PHP
Gambit vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
邮箱下拉自动填充选择示例代码附图
2014/04/03 Javascript
JQuery异步获取返回值中文乱码的解决方法
2015/01/29 Javascript
javascript实现表格增删改操作实例详解
2015/05/15 Javascript
javascript文件加载管理简单实现方法
2015/07/25 Javascript
js获取及修改网页背景色和字体色的方法
2015/12/29 Javascript
canvas实现手机端用来上传用户头像的代码
2016/10/20 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
Angular.Js中过滤器filter与自定义过滤器filter实例详解
2017/05/08 Javascript
[js高手之路]寄生组合式继承的优势详解
2017/08/28 Javascript
小程序接入腾讯位置服务的详细流程
2020/03/03 Javascript
简单了解前端渐进式框架VUE
2020/07/20 Javascript
JS实现简单贪吃蛇小游戏
2020/10/28 Javascript
JavaScript实现轮播图效果
2020/10/30 Javascript
Nest.js散列与加密实例详解
2021/02/24 Javascript
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
在Python程序中进行文件读取和写入操作的教程
2015/04/28 Python
python web框架学习笔记
2016/05/03 Python
浅谈Python实现贪心算法与活动安排问题
2017/12/19 Python
python简易远程控制单线程版
2018/06/20 Python
Python基础知识点 初识Python.md
2019/05/14 Python
python命令 -u参数用法解析
2019/10/24 Python
关于pandas的离散化,面元划分详解
2019/11/22 Python
python中count函数简单用法
2020/01/05 Python
css3的过滤效果简单实例
2016/08/03 HTML / CSS
Nike意大利官网:Nike.com IT
2020/01/19 全球购物
党支部党的群众路线对照检查材料
2014/09/24 职场文书
学习党章的体会
2014/11/07 职场文书
商铺租房协议书范本
2014/12/04 职场文书
2015年收银员个人工作总结
2015/04/01 职场文书
《学会生存》读后感3篇
2019/12/09 职场文书