更新记录
v2.77(2023-04-26)
下载此版本
F:修复全局变量造成的报错
v2.76(2023-04-25)
下载此版本
F:修改文档
v2.75(2023-04-25)
下载此版本
U:兼容支付宝小程序
查看更多
平台兼容性
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>