很多年前的公众号h5项目,之前都正常,最近用户反映电脑端不能上传照片,经排查发现同一个页面,在手机端(安卓和IOS)和开发者工具里,都可以正常调用wx.chooseImage,但是在微信的windows/mac客户端里却提示permission denied。
测试逻辑为:
1、应用初始化时进行wx.config
2、在上传照片页面,点击添加按钮时进行wx.checkJsApi,success回调中执行wx.chooseImage
执行效果如下,pc/mac端提示checkResult为true,之后permission denied;手机端正常打开照片、拍照选择器;开发工具中正常打开选择文件窗口。
pc/mac端效果
ios/android/开发工具中效果
代码如下:
wx.checkJsApi({
jsApiList: ['chooseImage'], // 需要检测的JS接口列表,所有JS接口列表见附录2,
success: function (res) {
// 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
wx.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
var localId = res.localIds[0]; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
wx.uploadImage({
localId: localId, // 需要上传的图片的本地ID,由chooseImage接口获得
isShowProgressTips: 1, // 默认为1,显示进度提示
success: function (res) {
// 返回图片的服务器端ID
}
});
}, error: function (e) {
Common.alert(e);
$scope.upError = e;
}
});
},
fail: function (res) {
console.log(2772, res)
}
});
该接口已经不维护了,建议使用wx.chooseMedia