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 相关文章推荐
jquery 问答知识整理
Feb 11 Javascript
原生javascript和jquery判断浏览器版本等信息
Jul 04 Javascript
用jquery仿做发微博功能示例
Apr 18 Javascript
原生js实现类似弹窗抖动效果
Apr 02 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
Apr 06 Javascript
在JavaScript中使用对数Math.log()方法的教程
Jun 15 Javascript
JS获取当前页面名称的简单实例
Aug 19 Javascript
bootstrap select下拉搜索插件使用方法详解
Nov 23 Javascript
web前端vue filter 过滤器
Jan 12 Javascript
Vue数据双向绑定原理及简单实现方法
May 18 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
Nov 14 Javascript
浅谈layui使用模板引擎动态渲染元素要注意的问题
Sep 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
Php无限级栏目分类读取的实现代码
2014/02/19 PHP
php将文本文件转换csv输出的方法
2014/12/31 PHP
PHP 表单提交及处理表单数据详解及实例
2016/12/27 PHP
PHP常用的三种设计模式
2017/02/17 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
php5.6.x到php7.0.x特性小结
2019/08/17 PHP
jquery操作复选框(checkbox)的12个小技巧总结
2014/02/04 Javascript
Javascript 按位与赋值运算符 (&amp;=)使用介绍
2014/02/04 Javascript
js实现兼容IE、Firefox的图片缩放代码
2015/12/08 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
使用jQuery Mobile框架开发移动端Web App的入门教程
2016/05/17 Javascript
浅析jQuery 遍历函数,javascript中的each遍历
2016/05/25 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
vue cli升级webapck4总结
2018/04/04 Javascript
vue实现图片按比例缩放问题操作
2020/08/11 Javascript
JavaScript封装单向链表的示例代码
2020/09/17 Javascript
深入理解Python中的*重复运算符
2017/10/28 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
TensorFlow变量管理详解
2018/03/10 Python
Python函数参数操作详解
2018/08/03 Python
scrapy-redis源码分析之发送POST请求详解
2019/05/15 Python
基于numpy中的expand_dims函数用法
2019/12/18 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
2020/04/23 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
2020/08/07 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
python import 上级目录的导入
2020/11/03 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
2021/01/12 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码
2021/02/24 HTML / CSS
印尼购物网站:iLOTTE
2019/10/16 全球购物
Java语言程序设计测试题改错题部分
2014/07/22 面试题
秋季运动会广播稿大全
2014/02/17 职场文书
关于感恩的演讲稿500字
2014/08/26 职场文书
公司合并协议书范本
2014/09/30 职场文书
医院中层管理人员培训心得体会
2016/01/11 职场文书
MySQL七种JOIN类型小结
2021/10/24 MySQL
使用Python获取字典键对应值的方法
2022/04/26 Python