Ant Design upload 文件上传 限制文件只能上传一个

这篇具有很好参考价值的文章主要介绍了Ant Design upload 文件上传 限制文件只能上传一个。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上传前:Ant Design upload 文件上传 限制文件只能上传一个,vue.js,前端,javascript               

回显:可以删除 Ant Design upload 文件上传 限制文件只能上传一个,vue.js,前端,javascript

 最近做了一个后台管理系统使用的是 Ant Design和vue框架搭建的

文件上传:组件:  Ant Design   https://1x.antdv.com/components/upload-cn/  (upload 官方文档)

功能需求1.可以拖拽,或者点击上传文件  2.只能上传单个文件,不能上传多个文件。3.导入文件只能是 xls、xlsx格式 4.文件大小不能超过10M    5.点击取消,如果当前有文件正在上传,提示                     用户,没有的话,关闭弹窗

具体思路:1.点击文件上传之前判断文件的格式/大小符合条件展示,不符合条件提示用户。2.点击确定时,判断文件是否存在,后端需要接受的参数是 formData数据,对文件进行处理。调用接                     口,成功后,更新数据,不成功,提示用户。3.点击取消,如果当前有文件正在上传,提示用户,没有的话,关闭弹窗

注意事项:1.因为antd upload 上传多个文件自带remove 回调函数,但是如果fileList 只有一个文件时,需要自己调用remove 回调函数,否则,上传文件后的删除按钮失效。

                  2.因为我的需求是只能上传一个文件,所以在上传文件之前,不仅要判断格式,还要限制fileList中只能有一个数据,那么也就是后传的文件,要覆盖先传的文件。

                  3.因为是我自己封装的组件,需要注意父子组件传递数据的问题~~~~~

接下来上代码。

HTML部分

<template>

  <div class="dialog">

    <a-modal :visible="visible1" :confirmLoading="loading1" width="20%" :title="title1 === 'batch' ? '推广' : ''" centered

      @cancel="() => { $emit('cancelBatch',fileList) }" @ok="() => { $emit('okBatch', fileList) }">

      <div>

        <span style="margin-right: 20px; margin-bottom: 10px;display: inline-block;">导入模板</span>

        <a :href='template' @click="downLoad">下载</a>

      </div>

      <a-upload-dragger name="file" :before-upload="handleBeforeUpload" :file-list="fileList"  :remove="handleTableRemove">

        <p class="ant-upload-drag-icon">

          <a-icon type="inbox" />

        </p>

        <p class="ant-upload-text">

          点击或将文件拖拽到这里上传

        </p>

        <p class="ant-upload-hint">

          支持扩展名:.xlsx .xls

        </p>    

      </a-upload-dragger>

    </a-modal>

  </div>

</template>

Script部分

​
​
 //删除icon  

    handleTableRemove: function (file) {

      const index = this.fileList.indexOf(file);

      const newFileList = this.fileList

      newFileList.splice(index, 1);

      this.fileList = newFileList;

    },

    handleBeforeUpload: function (file, fileList) {

      this.file = file

      console.log(file, fileList);

      //判断文件大小

      const isLt10M = file.size / 1024 / 1024 < 10

      if (!isLt10M) {

        this.$message.error(file.name + '文件大小超出限制,请修改后重新上传')

        return false

      }

      //判断上传文件格式

      let extension = file.name.split('.')[1] === 'xls';

      let extension2 = file.name.split('.')[1] === 'xlsx';

      if (!extension && !extension2) {

        this.$message.warning('导入文件只能是 xls、xlsx格式!');

        return false

      }

      this.fileList = [...this.fileList, file];

      //限制文件只能上传一个

      this.fileList = this.fileList.slice(-1);

      return false

    },

​

​

点击确认

okBatch(fileList) {

      if (fileList.length > 0) {

        // file 是上传的文件

        // 后端需要接受的参数是 formData数据,

        const form = new FormData()

        form.append('file', fileList[0])

       //点击确定后先让确定按钮loading

        this.confirmLoading1 = true

        importTask(form).then((res) => {

          if (res.code === 2000) {

           //上传成功后取消loading

            this.confirmLoading1 = false

            this.visible1 = false

            this.$message.info(res.message)

            //重置列表数据

            this.handleReset()

          } else if (res.code === 5000) {

            this.$message.error(res.message)

            this.confirmLoading1 = false

          } else {

            this.$message.error(res.message)

            this.confirmLoading1 = false

          }

        })

      } else {

        this.$message.error('您还没有上传文件!')

      }

    },

点击取消

 cancelBatch() {

        if (!this.confirmLoading1) {

          this.visible1 = false

        } else {

          this.$message.error('您正在上传文件!')

        }

    },

具体就是这样完成的。

写的比较菜,有问题欢迎在评论区提出讨论,谢谢!文章来源地址https://www.toymoban.com/news/detail-628986.html

到了这里,关于Ant Design upload 文件上传 限制文件只能上传一个的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

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

    需求:1.表单输入信息 2.上传Excel附件 3.下载附件模板 4.限制上传文件的格式、文件的大小、文件的数量 5.将表单和Excel文件一起提交给后端 效果图: 样式部分 data部分代码 method中的代码

    2024年02月12日
    浏览(60)
  • el-upload上传文件类型大小限制+手动上传+通过后端给的接口带参数

      本地上传文件类型只能是 xml 和 a2l 的 做多上传个数为2个 可以多选上传 每种格式最多上传一个文件 上传为手动上传到服务器 上传错误有相应的提示   首先上传为手动上传那么文件类型我是打算在选取文件到前端页面的过程中我就处理文件 或者也    可以在上传服务器的

    2024年02月08日
    浏览(111)
  • 如何vue使用ant design Vue中的select组件实现下拉分页加载数据,并解决存在的一个问题。

        需求:拉下菜单中数据过多,200条以上,就会导致select组件卡死。所以需要使用滑动到底部使其分页加载     可以借助 onPopupScroll 事件来监听下拉菜单的滚动事件,并判断当前是否已经到达了下拉菜单底部。具体可以通过以下步骤实现:     1、在组件中绑定 @popupScro

    2023年04月20日
    浏览(54)
  • Vue Element upload组件和Iview upload 组件上传文件

    今天要分享的是使用这俩个UI组件库的upload组件分别实现调用组件本身的上传方法实现和后台交互。接下来就是开车的时间,请坐稳扶好~ 一、element upload组件传送门  1、html文件 注意事项: 使用组件本身的上传事件,必须加auto-upload属性设置为false;                 

    2024年02月11日
    浏览(44)
  • vue 使用 el-upload 上传文件(自动上传/手动上传)

    vue 使用 el-upload 上传文件(自动上传/手动上传) 上传 上传

    2024年02月13日
    浏览(60)
  • vue3+ant design vue+ts实战【ant-design-vue组件库引入】

    🔥🔥更多内容见Ant Design Vue官方文档 🔥点击复习vue3【watch检测/监听】相关内容 👏👏👏一个好项目的编写不仅需要完美的逻辑,以及相应的技术,同时也需要一个 设计规范的高质量UI组件库 。👏👏👏本期文章将会详细讲解 Ant Design of Vue 组件库的 安装、使用、引入 。

    2024年02月02日
    浏览(50)
  • vue使用elementUI的upload上传文件封装

    将文件上传的方法封装一下,供大家统一调用, 话不多说,直接上代码 action 上传的地址 accept 接受上传的文件类型 multiple 是否开启多文件上传模式 limit 限制上传个数 fileList 文件列表 disabled 是否禁用 before-upload 上传文件之前的钩子. on-success 上传成功的钩子函数 on-error 文件上

    2024年02月09日
    浏览(53)
  • 【学习记录21】Vue+ElementUI el-upload多文件上传,一次请求上传多个文件!

    前情回顾说点废话。。。 1、项目当中遇到需要上传多个图片,一次选取多个图片。但是吧el-upload默认只能一个一个传,每次上传成功还的自己去push,一个一个去判断。 2、关键是后台给的接口,要一次性接收一堆,无奈之下只能去网上搜索,大佬们都是给的代码片段无法直

    2024年02月12日
    浏览(61)
  • Vue Element ui Upload组件在上传文件时,动态切换 action上传路径

    当我们在使用 Element ui,Upload组件时,官网默认的基础配置如下 现在的需求是,如果页面只有 一个 el-upload组件,需要上传的文件,根据不同的类型,切换不同的action 上传路径。 首先我这里选择,通过调用 before-upload 上传文件之前的钩子函数,函数接收一个参数,就是上传的

    2024年02月11日
    浏览(42)
  • ant design vue 的getPopupContainer

    在 ant design vue 中,有几个组件是有 getPopupContainer 属性的,比如:下拉菜单 默认是渲染到body 上的,所以如果你想要对 下拉选择组件 的样式,做修改,如果 style 标签上开启了 scoped,肯定不会生效 所以,需要指定 getPopupContainer ,用法如下

    2024年02月08日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包