更新记录

v2.77(2023-04-26) 下载此版本

F:修复全局变量造成的报错

v2.76(2023-04-25) 下载此版本

F:修改文档

v2.75(2023-04-25) 下载此版本

U:兼容支付宝小程序

查看更多

平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
× × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

Upload-Image 上传图片

该组件可以搭配好友黄河爱浪的插件获取 https://ext.dcloud.net.cn/plugin?id=2316获取压缩图片的功能

Props

更新时间 字段 类型 默认值 功能描述 可选值
2021/07/10 number Number 9 上传数量
2021/07/10 url String ~ 上传的服务器接口地址
2021/07/10 file-name String img 上传文件名称
2021/07/10 img-mode String widthFix 图片模式
2021/07/10 header String {} 携带的请求头
2021/07/10 form-data String {} 携带的form数据
2021/07/10 title String 添加照片 上传按钮标题
2021/07/10 title-color String Color.primary 上传标题名称颜色
2021/07/10 close-color String Color.cancel 关闭按钮颜色
2021/07/10 size Array ['222rpx', '222rpx'] 上传按钮/图片大小
2021/07/10 disabled Boolean false 是否禁用上传
2021/07/10 background-color String #f7f7f7 上传按钮背景颜色
2021/07/10 before-upload Function ~ 上传前钩子
2021/07/10 filed-image String url 上传的图片/下载字段统一
2021/07/10 progress-size Number 1 进度条进度
2021/07/10 progress-color String Color.primary 进度条颜色
2021/07/10 progress-bg-color String Color.cancel 进度条背景颜色
2023/04/22 status-code String 0 返回成功状态码,一般都是返回0,根据后端状态码会返回其它
2023/04/22 status-field String errno 返回状态判断字段,一般返回code

Events

更新时间 事件名 默认值 功能描述
2021/07/10 @change ~ 图片列表发生变动触发
2021/07/10 @upload ~ 上传完成功触发
2021/07/10 @remove ~ 移除图片时触发
2021/07/10 @error ~ 上传发生错误触发

代码演示

请求预览图片

    <sunui-upimg :url="upPicUrl" ref="upload1" title="店铺logo" @upload="handleLoaded1" @change="handleChange1" :number="3"></sunui-upimg>

自定义上传图标

<sunui-upimg :url="upPicUrl" ref="upload2" title="上传照片1" @upload="handleLoaded2" @change="handleChange2" :number="3">
    <template v-slot:icon>
        <text class="s-add-list-btn-icon">+</text>
    </template>
</sunui-upimg>

限制上传图片格式

<sunui-upimg :url="upPicUrl" :before-upload="onBeforeUploadFactory" ref="upload2" title="上传照片2" @upload="handleLoaded3" @change="handleChange3" :number="3">
    <template v-slot:icon>
        <text class="s-add-list-btn-icon">+</text>
    </template>
</sunui-upimg>

限制上传图片大小

<sunui-upimg :url="upPicUrl" :before-upload="onBeforeUploadSize" ref="upload3" title="上传照片2" @upload="handleLoaded3" @change="handleChange3" :number="3">
    <template v-slot:icon>
        <text class="s-add-list-btn-icon">+</text>
    </template>
</sunui-upimg>

Example

<template>
    <view>
        <view label="上传图片"><text value="这里仅介绍上传图片的一些示例,更多请查看文档"></text></view>

        <view label="演示从服务器请求预览图片">
            <sunui-upimg :url="upPicUrl" ref="upload1" title="店铺logo" @upload="handleLoaded1" @change="handleChange1" :number="3"></sunui-upimg>
        </view>

        <view label="自定义上传图标+指定上传按钮宽高">
            <sunui-upimg :url="upPicUrl" ref="upload2" title="上传门店照片" :size="['220rpx', '100%']" @upload="handleLoaded2" @change="handleChange2" :number="1">
                <template v-slot:icon>
                    <text class="s-add-list-btn-icon">+</text>
                </template>
            </sunui-upimg>
        </view>

        <view label="限制上传图片格式/大小">
            <sunui-upimg :url="upPicUrl" :before-upload="onBeforeUpload" ref="upload3" title="上传照片2" @upload="handleLoaded3" @change="handleChange3" :number="3">
                <template v-slot:icon>
                    <text class="s-add-list-btn-icon">+</text>
                </template>
            </sunui-upimg>
        </view>
    </view>
</template>

<script>
export default {
    data() {
        return {
            // 上传图片域名
            upPicUrl: 'https://cx.csredian.com/app/index.php?i=7&c=entry&a=wxapp&v=2.2.4&do=upload_img&m=wjyk_sqpt'
        };
    },
    onLoad() {
        // 设置预览图片
        this.$s.nextTick(() => {
            this.$refs.upload1.setItems(['https://cx.csredian.com//attachment/images/1682415359apmlab230567adc562ee0c1cb7fcd6ec9c78.png']);
        });
    },
    methods: {
        onBeforeUpload(file, index) {
            let fileType = ['image/png', 'image/jpeg'];

            if (file.size / 1000 > 51.2) {
                this.$s.toast('图片大小不能大于50K');
                return false;
            }
            if (fileType.indexOf(fileType) === -1) {
                this.$s.toast(`仅支持${fileType.join('、').replace(/image\//g, '')}图片格式`);
                return false;
            }
        },
        // 上传
        handleChange1() {
            this.$refs.upload1.upload();
        },
        handleChange2() {
            this.$refs.upload2.upload();
        },
        handleChange3() {
            this.$refs.upload3.upload();
        },
        // 获取上传或者预览后的图片
        handleLoaded1(e) {
            console.log(e);
        },
        // 获取上传或者预览后的图片
        handleLoaded2(e) {
            console.log(e);
        },
        // 获取上传或者预览后的图片
        handleLoaded3(e) {
            console.log(e);
        }
    }
};
</script>

<style lang="scss">
.s-add-list-btn-icon {
    font-size: 80rpx;
    height: 80rpx;
    line-height: 80rpx;
    margin-bottom: 20rpx;
    color: #999;
}
</style>

隐私、权限声明

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

相机

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

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

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问