1、微信公众号上传照片方法 wxPic.js
import { Toast } from "vant";
import "./wx.js";
import axios from 'axios';
export function WXJSSDKValidate(PicArray, picIds, paramsObj, n) {
paramsObj.count++;
wx.chooseImage({
count: n,
sizeType: ["compressed"],
sourceType: ["album", "camera"],
success: function (response) {
if (PicArray.length + response.localIds.length > n) {
Toast('图片数量不能大于 ' + n + ' 张')
return
}
GetWeiXinImages(response, PicArray, picIds, paramsObj);
}
});
}
async function GetWeiXinImages(resData, PicArray, picIds, paramsObj) {
let localIds = resData.localIds;
var uploadCount = 0;
var localIdLength = localIds.length;
var uploadImg = (paramsObj, PicArray, picIds) => {
PicArray.push({ PID: localIds[uploadCount], Value: localIds[uploadCount] });
wx.uploadImage({
localId: localIds[uploadCount],
isShowProgressTips: 1,
success: function (res) {
uploadCount++;
paramsObj.weixinId.push(res.serverId)
if (uploadCount < localIdLength) {
uploadImg(paramsObj, PicArray, picIds);
}
axios.get(`自己服务器上传接口路径` + res.serverId)
.then(response => {
if (response.data.code == 0) {
let data = response.data.data;
picIds.push(data)
if (picIds.length == paramsObj.weixinId.length) {
paramsObj.tempArray = [];
return PicArray, picIds
}
}
})
.catch(err => {
})
}
});
}
uploadImg(paramsObj, PicArray, picIds);
}
2、调用文件test.js:
<template>
<div>
<van-field
readonly
label="照片:"
@click-icon="SelectPhoto"
icon="photograph"
@click="SelectPhoto"
/>
<div class="imgBox">
<span
class="spanBox"
v-for="(item, index) in PhotoArray"
:key="index"
>
<img :src="item.Value" />
<van-icon
name="close"
@click="CloseSelectImg(
index,
PhotoArray,
PhotoImgIds
)"/>
</span>
</div>
</div>
</template>
<script>
import './wx.js'
import Url from '../../utils/url'
import { WXJSSDKValidate } from './wxPic'
export default {
data() {
return {
PhotoArray: [],
PhotoImgIds: [],
paramsObj:{
count:0,
tempArray:[],
weixinId:[],
tempIndex:0
}
}
},
beforeMount() {
this.$get(
Url.wechat_v1_jssdk_validate +
`?url=${encodeURIComponent(window.location.href)}`
).then((res) => {
if (res.code == 0) {
wx.config({
debug: false,
appId: res.data.appId,
timestamp: res.data.timestamp,
nonceStr: res.data.nonceStr,
signature: res.data.signature,
jsApiList: ['chooseImage', 'uploadImage'],
})
} else if (res.code == -1) {
console.log(res)
}
})
},
methods: {
SelectPhoto() {
if (this.PhotoArray.length == 3) {
Toast('只能选择3张图片')
return
}
WXJSSDKValidate(
this.PhotoArray,
this.PhotoImgIds,
this.paramsObj,
3
)
},
CloseSelectImg(index, PhotoArray, ImgIDs) {
Dialog.confirm({
title: '',
message: '确认删除此照片?',
})
.then(() => {
PhotoArray.splice(index, 1)
PhotoImgIds.splice(index, 1)
})
.catch(() => {
})
},
Submit() {
console.log(PhotoImgIds);
},
}
}
</script>