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 相关文章推荐
extjs 为某个事件设置拦截器
Jan 15 Javascript
javascript设计模式之对象工厂函数与构造函数详解
Jul 30 Javascript
JS简单模拟触发按钮点击功能的方法
Nov 30 Javascript
基于Javascript实现弹出页面效果
Jan 01 Javascript
javascript insertAfter()定义与用法示例
Jul 25 Javascript
javascript中json基础知识详解
Jan 19 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
Dec 25 Javascript
深入理解JavaScript的async/await
Aug 05 Javascript
angularjs 动态从后台获取下拉框的值方法
Aug 13 Javascript
JS实现的字符串数组去重功能小结
Jun 17 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
Oct 28 Javascript
如何将Node.js中的回调转换为Promise
Nov 10 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中利用XML技术构造远程服务(上)
2006/10/09 PHP
php checkbox 取值详细说明
2010/08/19 PHP
php Ubb代码编辑器函数代码
2012/07/05 PHP
浅析php中抽象类和接口的概念以及区别
2013/06/27 PHP
php中switch语句用法详解
2015/08/17 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
PHP接入支付宝接口失效流程详解
2020/11/10 PHP
js操作ajax返回的json的注意问题!
2010/02/23 Javascript
js 中 document.createEvent的用法
2010/08/29 Javascript
jQuery使用hide方法隐藏元素自身用法实例
2015/03/30 Javascript
Javascript监视变量变化的方法
2015/06/09 Javascript
javascript中传统事件与现代事件
2015/06/23 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
2016/03/02 Javascript
详解Node.js中exports和module.exports的区别
2017/04/19 Javascript
VUE2实现事件驱动弹窗示例
2017/10/21 Javascript
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
2019/05/20 Javascript
Vue 打包体积优化方案小结
2020/05/20 Javascript
详解React 元素渲染
2020/07/07 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
python实现telnet客户端的方法
2015/04/15 Python
python下os模块强大的重命名方法renames详解
2017/03/07 Python
python smtplib模块自动收发邮件功能(一)
2018/05/22 Python
python里dict变成list实例方法
2019/06/26 Python
学习Django知识点分享
2019/09/11 Python
解决python使用list()时总是报错的问题
2020/05/05 Python
基于python检查矩阵计算结果
2020/05/21 Python
python利用os模块编写文件复制功能——copy()函数用法
2020/07/13 Python
python FTP编程基础入门
2021/02/27 Python
中国制造网:Made-in-China.com
2019/10/25 全球购物
企业爱岗敬业演讲稿
2014/09/04 职场文书
出差报告怎么写
2014/11/06 职场文书
未婚证明格式
2015/06/15 职场文书
超级实用的公文标题大全!
2019/07/19 职场文书
MySQL数据库超时设置配置的方法实例
2021/10/15 MySQL