查看: 87|回复: 0

uni-app下载文件在ios下失败

[复制链接]

5

主题

0

回帖

0

积分

热心网友

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2012-8-8
发表于 2020-9-28 20:27:00 | 显示全部楼层 |阅读模式

标签: js uni-app


前情

uni-app是我很喜欢的跨平台框架,它能开发小程序,H5,APP(安卓/iOS),对前端开发很友好,自带的IDE让开发体验也很棒,公司项目就是主推uni-app。

坑位

最近在做一个需求,需要在uni-app下载zip,word,pdf文件并打开浏览,发现在安卓下是正常的,但是在IOS下一直失败。

Why

其实是文件名用中文命名导致的,在IOS下需要对文件名执行一次转码,安卓下不需要,不然安卓又无法下载了。

解决方案

在调用uni.saveFile前,对文件名执行转码处理。

关键代码

// 下载关键测试代码如下
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;
}

参考地址:escape

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部