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


    标签: 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

  • 相关阅读:
    区块链技术驱动金融.mobi
    ProcessExplorer 工具下载
    免费的论文查重网站
    接口可以继承接口吗?
    比较中的自动拆装箱
    Java语言中的异常处理
    Java类加载过程
    通过反射访问父类的私有成员
    final关键字详解
    MVC 控制台 +log4net 存入数据库
  • 原文地址:https://www.cnblogs.com/xwwin/p/13746715.html
Copyright © 2020-2023  润新知