Form

Upload上传

上传图片、视频或文件。组件负责选择、预览、删除与上传态展示;实际上传由业务监听事件后完成,再回写 `src` / `status`。

上传图片、视频或文件。组件负责选择、预览、删除与上传态展示;实际上传由业务监听事件后完成,再回写 src / status。

示例图

基础用法

页面 .json 文件 usingComponents 中引入组件

// json
{
    "usingComponents": {
        "mx-upload": "/components/mxwui/upload/index"
    }
}

页面 .wxml 文件中使用组件

<mx-upload type="image" />

更多用法示例

上传类型 type

属性:type,可选 image、video、file,默认 image。

<mx-upload type="image" />
<mx-upload type="video" />
<mx-upload type="file" />

受控回写(推荐)

监听 upload_change,选择后自行上传,再回写远程地址与状态。

<mx-upload
    type="image"
    src="{{imageSrc}}"
    status="{{imageStatus}}"
    percent="{{imagePercent}}"
    bind:upload_change="handleUploadChange"
/>
handleUploadChange(e) {
    const {type, src, cover, file} = e.detail;
    if (type === 'del') {
        this.setData({imageSrc: '', imageStatus: '', imagePercent: 0});
        return;
    }
    if (type === 'choose' || type === 'retry') {
        this.setData({imageSrc: src, imageStatus: 'uploading', imagePercent: 0});
        // 业务上传,成功后:
        // this.setData({ imageSrc: remoteUrl, imageStatus: 'done', imagePercent: 100 })
        // 失败后:
        // this.setData({ imageStatus: 'fail' })
    }
}

上传状态 status

属性:status,可选 uploading、done、fail,默认空。

也可用旧属性 isFail 表示失败(与 status="fail" 等价)。

<mx-upload type="image" src="{{src}}" status="uploading" percent="{{46}}" />
<mx-upload type="image" src="{{src}}" status="fail" />
<mx-upload type="image" src="{{src}}" status="done" />

尺寸 width / small

属性:width 单位 rpx,默认 233;small 为小尺寸,默认 false。

仅传 small 时,容器会自动缩小为 160rpx,并缩小图标与文案。若同时传了自定义 width,则以 width 为准。

<mx-upload type="image" small />
<mx-upload type="image" width="{{160}}" small />

自定义文案 chooseText

属性:chooseText,默认空。为空时按 type 自动显示:上传图片 / 上传视频 / 上传文件。

<mx-upload type="image" chooseText="添加图片" />
<mx-upload type="video" chooseText="添加视频" />
<mx-upload type="file" chooseText="选择文件" />

禁用 / 不可删除

属性:disabled、deletable,默认分别为 false、true。

<mx-upload type="image" disabled />
<mx-upload type="image" src="{{src}}" deletable="{{false}}" />

来源与大小限制

属性:sourceType,默认 ['album', 'camera'];maxSize 单位字节,默认 0(不限制)。

<mx-upload
    type="image"
    sourceType="{{['album']}}"
    maxSize="{{2 * 1024 * 1024}}"
    bind:upload_oversize="handleOversize"
/>

自定义事件

事件:upload_choose,点击上传入口时触发(选择系统面板前)。

事件:upload_change,选择 / 删除 / 重试时触发,detail.type 为 choose | del | retry。

事件:upload_retry,失败态点击重试时触发。

事件:upload_oversize,选择文件超出 maxSize 时触发。

<mx-upload
    type="image"
    bind:upload_choose="onChoose"
    bind:upload_change="onChange"
    bind:upload_retry="onRetry"
    bind:upload_oversize="onOversize"
/>

参数

参数 类型 必填 可选值 默认值 参数描述
type String image、video、file image 上传类型
src String 资源地址
cover String 视频封面
width Number 数字 233 组件宽高,单位 rpx
small Boolean true、false false 小尺寸;未自定义 width 时容器变为 160rpx
status String uploading、done、fail 上传状态
isFail Boolean true、false false 是否失败(兼容)
percent Number 0-100 0 上传进度
disabled Boolean true、false false 是否禁用
deletable Boolean true、false true 是否可删除
sourceType Array ['album','camera'] 图片/视频来源
maxSize Number 数字 0 大小上限(字节),0 不限制
chooseText String 自定义上传文案,空则按 type 显示默认文案
autoPreview Boolean true、false true 选择后是否本地回写 src
previewUrls Array 图片预览列表;视频可为 [{url, poster}]

事件

事件名称 类型 返回值 事件说明
bind:upload_choose Custom {type} 点击上传入口
bind:upload_change Custom {type, src, cover, file?, status} 选择/删除/重试
bind:upload_retry Custom {type, src, cover} 失败重试
bind:upload_oversize Custom {file, maxSize} 超出大小限制

其他说明

  • 组件不内置 OSS/服务端上传,需业务接入后回写。
  • 选择成功后会先用临时路径本地预览,便于展示上传中态。