更新记录
1.0.0(2022-03-07)
下载此版本
上传地址和token请自行更改为自己的地址信息,首次提交。有问题随时反馈!
平台兼容性
App |
快应用 |
微信小程序 |
支付宝小程序 |
百度小程序 |
字节小程序 |
QQ小程序 |
app-vue |
× |
× |
× |
× |
× |
× |
钉钉小程序 |
快手小程序 |
飞书小程序 |
京东小程序 |
× |
× |
× |
× |
H5-Safari |
Android Browser |
微信浏览器(Android) |
QQ浏览器(Android) |
Chrome |
IE |
Edge |
Firefox |
PC-Safari |
× |
× |
× |
× |
√ |
× |
× |
× |
× |
自行下载插件,使用自己i项目的地址和token进行测试!!!
该组件为视频和图片上传为一体的上传组件,解决视频上传后,无法显示视频第一帧问题,和视频组件层级问题,
属性参数:
属性名 |
类型 |
默认值 |
说明 |
value |
Array |
[] |
数据格式为:[ 图片地址,图片地址 ] 受控图片列表 |
max |
Number |
6 |
展示图片最大值 |
chooseNum |
Number |
6 |
选择图片数 |
name |
String |
file |
发到后台的文件参数名 |
remove |
Boolean |
true |
是否展示删除按钮 |
add |
Boolean |
true |
是否展示添加按钮 |
disabled |
Boolean |
false |
是否禁用 |
action |
String |
'' |
上传地址 |
sourceType |
Array |
['album', 'camera'] |
选择照片来源 【ps:H5就别费劲了,设置了也没用。不是我说的,官方文档就这样!!!】 |
compress |
Boolean |
true |
是否需要压缩 |
quality |
Number |
80 |
压缩质量,范围0~100 |
headers |
Object |
{} |
上传的请求头部 |
formData |
Object |
{} |
HTTP 请求中其他额外的 form data |
uploadSuccess |
(res) =>{success:false,url:''} |
{success:false,url:''} |
解析上传返回信息 返回展示路径{success:true,url:'解析的路径'},若失败或解析出问题返回success:false,此属性和事件里面的uploadSuccess为两种方式,选择一种即可 |
mediaType |
String |
image |
文件类型 image/video/all |
maxDuration |
Number |
60 |
拍摄视频最长拍摄时间,单位秒。最长支持 60 秒。 (只针对拍摄视频有用) APP平台 1.9.7+(iOS支持,Android取决于ROM的拍照组件是否实现此功能,如果没实现此功能则忽略此属性。) 微信小程序、百度小程序 |
camera |
String |
back |
镜头方向 'front'、'back',默认'back'(只针对拍摄视频有用) |
事件
事件名称 |
说明 |
回调参数 |
uploadSuccess |
上传成功事件 |
Function(res) fileType 文件类型 0: 图片 1:视频 |
uploadFail |
上传失败事件 |
Function(err) |
chooseSuccess |
选择图片后触发(当不配置action参数时,触发此事件) |
Function(tempFilePaths,type) tempFilePaths文件路径 type 0:图片 1:视频 |
imgDelete |
删除图片后触发【del:返回删除的图片路径,tempFilePaths:返回删除之后的图片数组】 |
Function({del:del,tempFilePaths:tempFilePaths}) |
demo
<template>
<view class="content">
<xfx-image-upload
:max="6"
:chooseNum="6"
v-model="mobileData"
@uploadSuccess="ceshiUploadSuccess"
@chooseSuccess="chooseMobile"
@uploadFail="errorUpload"
@imgDelete="delMobile"
mediaType="all"
:action="urlConfig"
></xfx-image-upload>
</view>
</template>
<style>
</style>
<script>
import xfxImageUpload from "@/components/xfx-image-upload/xfx-image-upload.vue";
export default {
data() {
return {
urlConfig: "", //上传的地址,
mobileData: [], //上传成功的数组
};
},
components: { xfxImageUpload },
onLoad() {},
methods: {
//上传成功
ceshiUploadSuccess(res) {
console.log(res);
/****************
因为上传接口返回的结构不一致,所以以下代码需要根据实际的接口返回结构开发,在此只是展示如果给数组里添加的过程,仅供参考
***************/
var _res = JSON.parse(res.data);
if (_res.code == 200) {
this.mobileData.push(_res.message);
}
},
// 未配置地址
chooseMobile(res) {
console.log(res);
},
//删除
delMobile(del, tempFilePaths) {
this.mobileData = del.tempFilePaths;
console.log(this.mobileData);
},
// 上传失败
errorUpload(res) {},
},
};
</script>
<style>
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
</style>
备注
- 目前当文件大于1MB时进行压缩,如果需要调整,大家就手动改代码吧~
- 关于上传完成回显的问题,因为上传返回的结构都不一致,所以这部分代码需要开发者自己完成,只要将获取到的地址,添加到组件绑定的数组对象里即可
- 上传成功的图片或视频,均可进行播放或放大查看