uni-app下载文件在ios下失败
<p>标签: js uni-app</p><hr>
<h2 id="前情">前情</h2>
<p>uni-app是我很喜欢的跨平台框架,它能开发小程序,H5,APP(安卓/iOS),对前端开发很友好,自带的IDE让开发体验也很棒,公司项目就是主推uni-app。</p>
<h2 id="坑位">坑位</h2>
<p>最近在做一个需求,需要在uni-app下载zip,word,pdf文件并打开浏览,发现在安卓下是正常的,但是在IOS下一直失败。</p>
<h2 id="why">Why</h2>
<p>其实是文件名用中文命名导致的,在IOS下需要对文件名执行一次转码,安卓下不需要,不然安卓又无法下载了。</p>
<h2 id="解决方案">解决方案</h2>
<p>在调用uni.saveFile前,对文件名执行转码处理。</p>
<h3 id="关键代码">关键代码</h3>
<pre><code class="language-vue">// 下载关键测试代码如下
downloadFileAction() {
const downloadTask = uni.downloadFile({
url: 'http://www.test.com/文件.zip', //仅为示例,并非真实的资源
success: (res) => {
if (res.statusCode === 200) {
console.log('下载成功');
}
let that = this;
uni.saveFile({
tempFilePath: this.fileNameEscape(res.tempFilePath),
success: function(red) {
that.luj = red.savedFilePath
console.log(red)
}
});
}
});
downloadTask.onProgressUpdate((res) => {
console.log('下载进度' + res.progress);
console.log('已经下载的数据长度' + res.totalBytesWritten);
console.log('预期需要下载的数据总长度' + res.totalBytesExpectedToWrite);
});
},
/**
* ios下文件名中文处理
* @param {String} filename
*/
fileNameEscape(filename) {
if (uni.getSystemInfoSync().platform == "ios") {
filename = escape(filename);
}
return filename;
}
</code></pre>
<p>参考地址:escape</p>
</div>
<div id="MySignature" role="contentinfo">
好好学习!天天向上!<br><br>
来源:https://www.cnblogs.com/xwwin/p/13746715.html
頁:
[1]