更新记录

1.0.0(2026-03-16) 下载此版本

1.0.0


平台兼容性

uni-app(4.87)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - - - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - -

una-upload-resource

uni-app(小程序)上传资源组件,支持上传图片、视频、或两者混传,内置预览、删除、可选自动上传、文件大小校验、视频时长校验、上传前图片压缩。

功能特性

  • 支持资源类型:image / video / all
  • 支持最大数量限制:maxCount
  • 支持 v-model 双向绑定资源列表
  • 支持自动上传(uni.uploadFile)或仅选择本地文件
  • 支持图片预览、视频预览
  • 支持文件大小与视频时长校验
  • 支持上传前图片压缩(质量、阈值、尺寸可控)

快速使用

<template>
  <view>
    <una-upload-resource
      v-model="resourceList"
      acceptType="all"
      :maxCount="9"
      uploadUrl="https://your-api/upload"
      uploadName="file"
      :header="{ Authorization: token }"
      :formData="{ bizType: 'material' }"
      :enableFileSizeCheck="true"
      :maxFileSizeMB="20"
      :enableVideoDurationCheck="true"
      :maxVideoDuration="30"
      :enableCompressImage="true"
      :compressQuality="70"
      :compressThresholdMB="1.5"
      :compressWidth="1280"
      @change="onChange"
      @uploaded="onUploaded"
      @validate-fail="onValidateFail"
      @upload-error="onUploadError"
    />
  </view>
</template>

<script>
export default {
  data() {
    return {
      token: "Bearer xxx",
      resourceList: []
    };
  },
  methods: {
    onChange(list) {
      console.log("资源列表变化", list);
    },
    onUploaded(e) {
      console.log("单个文件上传成功", e);
    },
    onValidateFail(e) {
      console.log("资源校验失败", e);
    },
    onUploadError(e) {
      console.log("上传失败", e);
    }
  }
};
</script>

Props

参数 类型 默认值 说明
modelValue Array [] 资源列表(v-model
acceptType String all 可选:image / video / all
maxCount Number 9 最大上传数量
uploadUrl String "" 上传接口地址;不传则只选择本地文件
uploadName String file 上传字段名
header Object {} 上传请求头
formData Object {} 上传附加参数
autoUpload Boolean true 是否自动上传
enableFileSizeCheck Boolean false 是否开启文件大小校验
maxFileSizeMB Number 10 单文件最大大小(MB)
enableVideoDurationCheck Boolean false 是否开启视频时长校验
maxVideoDuration Number 60 视频最大时长(秒)
enableCompressImage Boolean false 是否开启图片压缩
compressQuality Number 80 压缩质量(0~100)
compressThresholdMB Number 0 图片超过该大小才压缩;0 表示开启后始终压缩
compressWidth Number 0 压缩宽度,0 表示不限制
compressHeight Number 0 压缩高度,0 表示不限制

事件

事件名 回调参数 说明
update:modelValue (list) v-model 同步
change (list) 资源列表变化
selected (list) 选择资源完成(未自动上传时常用)
uploaded ({ item, raw }) 单个资源上传成功
upload-error ({ item, error }) 单个资源上传失败
remove ({ index, item }) 删除资源
validate-fail ({ message, type, size, duration, file }) 文件校验失败

modelValue 数据结构

组件输出的列表项示例:

{
  id: "1710000000000_ab12cd",
  type: "image", // image | video
  url: "https://cdn.xxx.com/a.jpg", // 自动上传成功后为服务端地址;否则为本地临时地址
  size: 123456, // 字节
  duration: 0, // 秒,视频时有值
  uploading: false
}

说明

  • 自动上传时,会尝试从响应中解析以下字段作为最终地址:data.pathdata.urlpathurl
  • 若你的后端返回结构不同,建议监听 uploaded 事件后按业务自行转换。
  • 组件样式采用资源卡片网格,可直接用于小程序端。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。