公司有个小程序项目,就是单纯的小程序中使用web-view嵌套h5的项目。但是在文件下载的时候,安卓手机点击没反应,ios能打开文件但是都是乱码。
在网上也找了很久,后来确定了一种思路,通过判断当前的宿主环境来进行不同的操作,然后在h5中跳转到小程序的特定页面,并且将文件资源的URL传递过去。之后在小程序中调用微信的下载文件或者保存文件API。
总体思路就是这样,上代码。
h5端代码
// 判断所在环境
var ua = window.navigator.userAgent.toLowerCase();
if (ua.match(/micromessenger/i) == 'micromessenger') {
// 打开微信特定页面,然后下载文件
WX.miniProgram.navigateTo({
url: `/pages/file-upload/file-upload?url=${
encodeURIComponent(fileDownPath)}`
})
// console.log('是微信客户端')
} else {
// h5端直接使用a标签下载
this.downloadH5(fileDownPath,item.fieldName)
console