Image 图片

February 27, 2026 · View on GitHub

图片显示组件,支持预览、上传、删除等功能。

引入

import { AImage } from '@airpower/web'

Props

参数说明类型默认值必填
src图片显示的 URLstringundefined
clearable是否显示删除图标(仅 upload 时有效)booleantrue
placeholder提示文本(无图片时显示)stringundefined
upload允许上传booleanfalse
headers上传请求头IJson{}
data上传请求数据IJson{}
showTips显示上传提示booleanfalse
width图片宽度number100
height图片高度number100
limit限制上传大小(字节)number3 * 1024 * 1024
extensions允许上传的格式string[]['jpg', 'jpeg', 'png']
uploadUrl上传地址string''
uploadFileName上传文件的字段名string'file'
entity接收的文件实体类ITransformerConstructor<F>undefined

Emits

事件名说明回调参数
upload上传成功(file: F) => void
remove删除成功() => void

Slots

示例

<template>
  <!-- 基础显示 -->
  <AImage src="https://example.com/image.jpg" />

  <!-- 自定义尺寸 -->
  <AImage 
    src="https://example.com/image.jpg"
    :width="200"
    :height="150"
  />

  <!-- 支持上传 -->
  <AImage 
    :src="imageUrl"
    upload
    :entity="FileEntity"
    @upload="handleUpload"
    @remove="handleRemove"
  />

  <!-- 自定义上传配置 -->
  <AImage 
    upload
    :entity="FileEntity"
    :upload-url="customUploadUrl"
    :headers="{ token: 'xxx' }"
    :data="{ type: 'avatar' }"
    :limit="5 * 1024 * 1024"
    :extensions="['png', 'jpg']"
  />

  <!-- 自定义提示 -->
  <AImage 
    upload
    :entity="FileEntity"
    placeholder="点击上传头像"
  />
</template>

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

const imageUrl = ref('')

function handleUpload(file: FileEntity) {
  imageUrl.value = file.url
}

function handleRemove() {
  imageUrl.value = ''
}
</script>

注意事项

  • 点击图片可预览大图
  • 上传模式下,鼠标悬停显示删除按钮
  • 上传前会自动校验文件大小和格式
  • 上传成功后会回调 upload 事件并传入解析后的实体对象
  • 必须传入 entity 才能使用上传功能