当前位置:   article > 正文

Vue+elementUI中的el-upload实现上传文件给后端,限制上传文件的格式、文件的大小、文件的数量,将表单和Excel文件一起提交给后端_el-upload上传文件给后端

el-upload上传文件给后端

需求:1.表单输入信息

2.上传Excel附件

3.下载附件模板

4.限制上传文件的格式、文件的大小、文件的数量

5.将表单和Excel文件一起提交给后端

  • 效果图:

  1. 样式部分

  1. <el-form ref="form" :model="peopleform" label-width="150px">
  2. <el-form-item>
  3. <el-button
  4. type="primary"
  5. plain
  6. size="medium"
  7. icon="el-icon-download"
  8. style="float:right;"
  9. @click="downloads"
  10. >下载模板</el-button>
  11. </el-form-item>
  12. <el-form-item label="姓名">
  13. <el-input v-model="peopleform.name"></el-input>
  14. </el-form-item>
  15. <el-form-item label="电话">
  16. <el-input v-model="peopleform.phone"></el-input>
  17. </el-form-item>
  18. <el-form-item label="地址">
  19. <el-input v-model="peopleform.address"></el-input>
  20. </el-form-item>
  21. <el-form-item label="上传附件">
  22. <el-upload
  23. drag
  24. action="#"
  25. :http-request="httpRequest"
  26. :before-upload="beforeUpload"
  27. :on-exceed="handleExceed"
  28. >
  29. <i class="el-icon-upload"></i>
  30. <div class="el-upload__text">
  31. 将文件拖到此处,或
  32. <em>点击上传</em>
  33. </div>
  34. </el-upload>
  35. </el-form-item>
  36. <el-form-item>
  37. <el-button type="success" size="medium" @click="submit" style="margin:0 !important">提交</el-button>
  38. </el-form-item>
  39. </el-form>
  1. data部分代码

  1. data () {
  2. return {
  3. peopleform: {
  4. name: '',
  5. phone: '',
  6. address: '',
  7. },
  8. fileList: []
  9. }
  10. },
  1. method中的代码

  1. methods: {
  2. // 覆盖默认的上传行为
  3. httpRequest (raw) {
  4. this.fileList.push(raw)
  5. },
  6. // 上传前
  7. beforeUpload (file) {
  8. let fileSize = file.size
  9. const FIVE_M = 2 * 1024 * 1024
  10. //不允许上传大于2M
  11. if (fileSize > FIVE_M) {
  12. this.$message.error("最大上传2M")
  13. return false
  14. }
  15. //判断文件类型,必须是xlsx格式
  16. let fileName = file.name
  17. let reg = /^.+(\.xlsx)$/
  18. if (!reg.test(fileName)) {
  19. this.$message.error("只能上传xlsx!")
  20. return false
  21. }
  22. return true
  23. },
  24. // 文件数量提醒
  25. handleExceed () {
  26. this.$message({ type: 'error', message: '最多支持1个附件上传' })
  27. },
  28. //提交
  29. async submit () {
  30. const params = new FormData()
  31. this.fileList.forEach((x) => {
  32. params.append('file', x.file)
  33. })
  34. params.append('name', this.peopleform.name)
  35. params.append('phone', this.peopleform.phone)
  36. params.append('address', this.peopleform.address)
  37. const res = await this.axios.post("这里填路径", params)
  38. if (res) {
  39. this.$message.success("上传成功!")
  40. }
  41. },
  42. //设置下载文件
  43. downloads () {
  44. let a = document.createElement("a")
  45. a.href = "/data/datas/main_ventilator_excel.xlsx"
  46. a.download = "main_ventilator_excel.xlsx" //设置下载文件文件名,这里加上.xlsx指定文件类型
  47. a.style.display = "none"
  48. document.body.appendChild(a)
  49. a.click()
  50. a.remove()
  51. }
  52. }

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号