Skip to content

ImgUploader

图片上传组件,支持 PNG / WEBP / JPG / JPEG 格式,内置文件大小和类型校验,支持点击与拖拽两种方式。拖拽悬停时容器上会有 data-drag-over="true" 标记,可配合 UnoCSS 变体定制样式。

基本用法

默认

标题 + 说明 + 虚线边框的上传区。

上传参考图
支持 PNG / JPG / WEBP,最大 5MB

带图标

icon

上传正视图
支持 PNG / JPG / WEBP,最大 5MB

多文件上传

multiple

一次选择多张图片。

批量上传
支持同时上传多张图片

自定义大小限制

size

size 以 MB 为单位。超出会触发 size-error。

小图上传
单图 ≤ 2 MB

ImgUploaderInput

简化版,没有 UI 展示层,仅提供一个透明 <input>,适合自行封装上传入口:

vue
<script setup lang="ts">
import { ImgUploaderInput } from '@tripo3d/design';
</script>

<template>
  <div class="relative size-24">
    <MyCustomUI />
    <ImgUploaderInput
      class="absolute inset-0 opacity-0 cursor-pointer"
      multiple
      @change="onChange"
    />
  </div>
</template>

API

ImgUploader Props

名称 类型 默认值 说明
titlestring上传区标题
descriptionstring说明文字
iconstring图标类名(UnoCSS icon)
multipleboolean允许多文件
requiredboolean显示必填标记
sizenumber5单文件大小上限(MB)
classstring容器 class

ImgUploader Events

事件 Payload 说明
change(files: File[])文件选择/拖拽成功
size-error(file: File)文件超过大小限制
type-error(file: File)文件类型不支持

ImgUploaderInput

Props / Events 与 ImgUploader 相同,但不包含标题、描述和虚线边框等 UI 层。

基于 MIT 协议发布(内部使用)