Vxe UI vxe-upload 上传组件,显示进度条的方法

vxe-upload 上传组件

查看官网 https://vxeui.com

显示进度条很简单,需要后台支持进度就可以了,后台实现逻辑具体可以百度,这里只介绍前端逻辑。

上传附件

相关参数说明,具体可以看文档:

multiple 是否允许多选

limit-count 数量限制

limit-size 大小限制,单位是 M

fileTypes 格式限制,数组,例如:['xlsx', 'pdf', 'docx']

html 复制代码
<template>
  <div>
    <vxe-upload v-model="imgList" :limit-count="6" :limit-size="50" multiple :upload-method="uploadMethod"></vxe-upload>
  </div>
</template>

<script lang="ts" setup>
import { ref } from 'vue'
import axios from 'axios'

const imgList = ref([])

// 上传附件的方法
const uploadMethod = ({ file, updateProgress }) => {
  const formData = new FormData()
  formData.append('file', file)
  // 调用后台接口
  return axios.post('/demo/api/pub/upload/single', formData, {
    onUploadProgress (progressEvent) {
      // 进度监听事件,这里需要后端支持才能获取到对应的值,如果后台没实现对应的功能,这里获取不到进度值
      const percentCompleted = Math.round((progressEvent.loaded * 100) / (progressEvent.total || 0))
      // 获取到进度之后,调用 updateProgress() 方法更新进度,传一个百分比数字进去即可
      updateProgress(percentCompleted)
    }
  }).then((res) => {
  	// 这里是附件上传到后台后,后台返回得分信息,比如 id、url 之类的,会自动赋值给对应的行
    return {
      ...res.data
    }
  })
}
</script>

效果如下:

上传图片

imageTypes 格式限制,数组,例如:['png', 'jpg', 'gif']

html 复制代码
<template>
  <div>
    <vxe-upload v-model="imgList" mode="image" :limit-count="3" :limit-size="15" multiple :upload-method="uploadMethod"></vxe-upload>
  </div>
</template>

<script lang="ts" setup>
import { ref } from 'vue'
import axios from 'axios'

const imgList = ref([])

// 上传附件的方法
const uploadMethod = ({ file, updateProgress }) => {
  const formData = new FormData()
  formData.append('file', file)
  // 调用后台接口
  return axios.post('/demo/api/pub/upload/single', formData, {
    onUploadProgress (progressEvent) {
      // 进度监听事件,这里需要后端支持才能获取到对应的值,如果后台没实现对应的功能,这里获取不到进度值
      const percentCompleted = Math.round((progressEvent.loaded * 100) / (progressEvent.total || 0))
      // 获取到进度之后,调用 updateProgress() 方法更新进度,传一个百分比数字进去即可
      updateProgress(percentCompleted)
    }
  }).then((res) => {
  	// 这里是附件上传到后台后,后台返回得分信息,比如 id、url 之类的,会自动赋值给对应的行
    return {
      ...res.data
    }
  })
}
</script>

效果如下:

相关推荐
大猩猩X2 天前
vue 可视化表单设计器 vxe-form-design 创建自定义控件的详细用法
vue.js·vxe-ui
daols8812 天前
vue 表格 vxe-table 如何实现透视表拖拽对数据进行分组汇总,金额合计、平均值等
vue.js·vxe-table
daols8812 天前
vue 树组件 vxe-tree 如何异步判断右键菜单的权限控制,异步显示隐藏菜单选项
vue.js·vxe-ui
daols8813 天前
vue 表格 vxe-table 手动操作单元格范围选择,手动选择 excel 指定区域的用法
vue.js·excel·vxe-table
仰望.13 天前
vue vxe-context-menu 如何给任意组件使用右键菜单,全局右键菜单
vue.js·vxe-ui
仰望.14 天前
vue 甘特图 vxe-gantt 如何实现标记删除数据,显示标记删除后行效果,获取已标记的行数据
vue.js·甘特图·vxe-ui
chenhdowue14 天前
vue 如何实现 vxe-table 的按键操作回车键的上下移动修改为 Tab 键的左右切换
vue.js·vxe-table·vxe-ui
仰望.18 天前
vxe-table 如何实现分页勾选复选框功能,分页后还能支持多选的选中状态
前端·vue.js·vxe-table
daols8821 天前
vue 甘特图 vxe-gantt table 可视化依赖线的使用,可视化拖拽创建连接线的用法
vue.js·甘特图·vxe-table
chenhdowue24 天前
vue 甘特图 vxe-gantt 任务里程碑和依赖线的使用
vue.js·甘特图·vxe-ui·vxe-gantt