众所周知,uniapp的webview有特殊的安全策略,无法实现正常下载,下载会导致文件下载失败,那么该如何解决这个问题呢?官方提示可以将文件转blob、blob转base64进行下载,我研究了半天,发现这条路行不通,于是乎自己想出了另一方案。
背景说明:
APP为uniapp开发;
webview为泛微高代码平台开发的react的页面(这块经研究,应该啥语言开发的都可以,html、vue、react都行,无限制);
解决方案:
webview进行下载的时候,向uniapp发送消息,消息内容为文件的base64,让uniapp触发下载事件。
webview:
1、引入uniapp的webview.js文件
2、在页面中引用,调用流程需严格复制下面代码,不要进行编辑和修改
uni.webView.postMessage({
data: {
pdfFile: base64data
}
});
base64data需要自行将文件转成base64,这一步就省略了,如此webview就可以了。
app:
1、将base64转临时路径,方法如下
/**
* base64字符串转成文件
* @param {String} base64Str // 允许包含前缀
* @param {String} fileName // 文件名称:1663061363470.xlsx
* @param {Object} callback // 返回本地路径径URL,file:///xxx/doc/1663062980631.xlsx
*/
base64ToFile2(