ant design vue上传文件_antd vue 表单

ant design vue上传文件_antd vue 表单antdvue文件上传实例说明该实例是后端进行文件上传至minio服务器这里仅仅是展示前端antdvue得代码限制文件类型配置查看这里<template><a-upload:headers=”headers”:action=”url”:fileList=”fileList”@change=”handleChang…


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

antd vue 文件上传实例

说明

该实例是后端进行文件上传至minio服务器
这里仅仅是展示前端antd vue得代码

限制文件类型配置查看
这里

<template>
  <a-upload
    :headers="headers"
    :action="url"
    :fileList="fileList"
    @change="handleChange"
    :beforeUpload="beforeUpload"
  >
    <a-button :disabled="isShow"> <a-icon type="upload" /> Upload </a-button>
  </a-upload>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
  name: 'MinioUplode',
  // 此处接收仅仅针对有有父组件得情况,如果直接使用a-upload则不需要
  props: {
    url: {
      type: String,
      default: 'api/storage/upload'
    },
    fileListTemp: {
      type: Array,
      default: () => []
    },
    isShow: {
      type: Boolean,
      default: false
    }
  },
  data () {
    return {
      fileList: this.fileListTemp,
      // 请求头里要携带token用来识别身份
      headers: {
        'Authorization': 'Bearer' + this.token()
      }
    }
  },
  methods: {
    ...mapGetters(['token']),
    // 此方法主要用来处理回显列表,以及去除没有实际上传得文件
    // 图片一旦长传在file中会有status字段,如果没有则没有实际上传
    // status有四种状态  'uploading' 'done' 'error' 'removed'
    handleChange (info) {
      let fileList = [...info.fileList]
      // 这里用来处理,页面中展示已经上传得个数
      // .slice(),括号里是负数是从尾部开始截取 限制最长15
      fileList = fileList.slice(-15)
      // 此处去除fileList中status为undefined得对象
      // 注意此处不是null!!!!
      fileList = fileList.filter(item => item.status !== undefined)
      // 从后端得回调 response 中获取url,并复制给fileList对象得url
      // 作用,有了url 前端才可以下载查看
      fileList = fileList.map(file => {
        if (file.response) {
          // 获取回调url
          file.url = file.response.data.url
        }
        return file
      })
      this.fileList = fileList
    },
    beforeUpload (file) {
      // 此处针对修改操作时,如果之前没有数据this.fileList时null 进行...this.fileList会报错
      // 错误类型: Invalid attempt to spread non-iterable instance
      if (this.fileList === null) {
        this.fileList = []
      }
      const list = [...this.fileList]
      // 限制最多只能穿15个文件
      const listLength = list.length > 14
      console.log(list.length, 'list.length')
      if (listLength) {
        this.$message.warning('最多上传15个文件')
      }
      // 限制单个文件的大小不大于100MB
      const size = file.size / 1024 / 1024 > 100
      if (size) {
        this.$message.warning('上传文件不能大于100MB')
      }
      // 返回时注意,此处要把所有得标识flag全部返回并且使用&
      // 原因:有一个条件不满足,就不能进行文件上传
      return !size && !listLength
    }
  },
  // 此处监听仅仅针对有有父组件得情况,如果直接使用a-upload则不需要
  watch: {
    fileList (val) {
      this.fileList = val
      // 向父组件更新
      this.$emit('updateFileList', val)
    },
    fileListTemp (val) {
      this.fileList = val
    }
  }
}
</script>
<style scoped>
</style>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170645.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • C# DllImport的用法

    大家在实际工作学习C#的时候,可能会问:为什么我们要为一些已经存在的功能(比如Windows中的一些功能,C++中已经编写好的一些方法)要重新编写代码,C#有没有方法可以直接都用这些原本已经存在的功能呢?答案是肯定的,大家可以通过C#中的DllImport直接调用这些功能。DllImport所在的名字空间usingSystem.Runtime.InteropServices;MSDN中

    2022年4月8日
  • 一阶惯性环节的传递函数表达式_设一力传感器可作为二阶系统来处理

    一阶惯性环节的传递函数表达式_设一力传感器可作为二阶系统来处理具有纯滞后一阶惯性系统计算机控制系统设计具体内容:1)自己给出系统的闭环传递函数的表达式2)自己设定系统性能指标3)书面设计一个计算机控制系统的硬件布线连接图4)硬件布线连接图转化为系统结构图5)选择一种控制算法6)软件工程知识编写程序流程图7)在MATLAB下进行编程和仿真,给出单位阶跃函数的输出结果表8)进行系统的可靠性和抗干扰性的分析计算机控制系统课程设计目录…

    2022年9月1日
  • jquery删除添加输入文本框

    效果体验:http://hovertree.com/texiao/jquery/67/效果图:参考:http://hovertree.com/h/bjaf/traversing_each.htm代码如

    2021年12月24日
  • 罗技键盘k380打不了字_罗技k380键盘配对成功后无法使用

    罗技键盘k380打不了字_罗技k380键盘配对成功后无法使用mac连接成功罗技k380键盘,但是发现数字键上面的字符对不上,很多字符以及标点符号都打不出来,是什么原因导致的呢?问题分析首先,分析一下,到底是什么原因导致的?可以连接其他设备试一试,比如我发现k380键盘在我的ipad上是可以正常使用的。那么就排除了键盘本身存在问题,坏了等猜测。如果不是键盘本身出了问题,那么我们就要去分析问题究竟出现在哪里?联系了客服,加上自己对键盘配对过程的回顾,大致判定问题出现在最开始的匹配的时候,选错了【键盘类型】。解决问题-重设【键盘类型】步骤如下:【系统偏好设置

    2022年10月9日
  • SELinux: Could not downgrade policy file

    SELinux: Could not downgrade policy file

    2021年10月18日
  • 如何用python制作3d游戏_【教程】12个步骤让你快速学会制作3D游戏

    如何用python制作3d游戏_【教程】12个步骤让你快速学会制作3D游戏原标题:【教程】12个步骤让你快速学会制作3D游戏Unity3D不仅是一款功能强大且易于上手的游戏引擎,更重要的是,它还可以被免费下载(它还有一个功能更强大的付费版,但其实你可以使用免费版本完成绝大部分工作)。你大可不必被它的名字误导,Unity既可以创建2d游戏也可以创建3d游戏。你可以使用C#,Java,或者一种和Python类似的称为Boo的语言进行编程。在本教程中,我将带你熟悉Un…

    2022年5月30日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号