Upload 上传

February 27, 2026 · View on GitHub

文件上传弹窗组件,支持拖拽上传、文件校验等功能。

引入

import { AUpload } from '@airpower/web'

Props

参数说明类型默认值必填
onConfirm标准确认返回(file: F | null) => voidnull
onCustomConfirm自定义确认按钮事件Functionnull
onCustomSuccess自定义上传成功回调Functionnull
onCancel标准取消返回Functionnull
title上传弹窗标题string'文件上传'
confirmText确认按钮文字stringundefined
maxSize允许的最大文件大小(字节)number10MB
uploadName上传文件字段名stringWebConfig.uploadFileName
uploadSuccess上传成功文案string'上传成功'
uploadUrl上传路径stringWebConfig.uploadUrl
extensions允许上传的后缀string[]['jpg', 'jpeg', 'png']
entity接收文件的实体类ITransformerConstructor<F>-
data上传同时发送的数据IJsonnull
header上传同时发送的 headerIJsonnull
tips提示文字string''

Emits

无(通过 Props 回调)

Slots

示例

<template>
  <!-- 基础用法 -->
  <AUpload
    :entity="FileEntity"
    :on-confirm="handleConfirm"
    :on-cancel="handleCancel"
  />

  <!-- 自定义配置 -->
  <AUpload
    :entity="FileEntity"
    title="上传头像"
    confirm-text="确定"
    :max-size="5 * 1024 * 1024"
    :extensions="['jpg', 'png']"
    :on-confirm="handleConfirm"
    :on-cancel="handleCancel"
  />

  <!-- 自定义上传成功 -->
  <AUpload
    :entity="FileEntity"
    :on-custom-success="handleCustomSuccess"
    :on-cancel="handleCancel"
  />

  <!-- 带额外数据 -->
  <AUpload
    :entity="FileEntity"
    :data="{ type: 'avatar', userId: 1 }"
    :header="{ token: 'xxx' }"
    :on-confirm="handleConfirm"
    :on-cancel="handleCancel"
  />
</template>

<script setup lang="ts">
import { FileEntity } from '@/model/FileEntity'

function handleConfirm(file: FileEntity | null) {
  if (file) {
    console.log('上传成功:', file)
  }
}

function handleCancel() {
  console.log('取消上传')
}

function handleCustomSuccess(result: any) {
  console.log('自定义上传成功:', result)
}
</script>

注意事项

  • 必须传入 entity 参数
  • 上传前会自动校验文件大小和格式
  • 支持拖拽上传
  • 上传成功后会自动关闭弹窗
  • 可通过 onCustomSuccess 自定义上传成功处理逻辑
  • 默认最大 10MB,支持自定义