当前位置: 首页 > article >正文

uniapp——App下载文件,保存、打开文件(二)

uniapp如何下载文件、保存、打开文件

时光荏苒,2024即将过去!
迈向2025,祝大家新的一年工作顺利、万事如意,少一点BUG,涨一点工资…↖(ω)↗

文章目录

    • uniapp如何下载文件、保存、打开文件
      • 下载文件
      • 保存并打开文件
      • 处理` iOS` 打开文件可能失败问题
      • 相关API返回数据格式
        • 下载成功
        • 保存文件成功
        • 拷贝目录成功

相关Api:

  • uni.downloadFile
  • uni.saveFile
  • 5+ API

下载文件

  • 通过 uni.downloadFile 结合 uni.saveFile 及 5+ Api 实现
  • 例:导出 Excel文件
downloadFile() {
	// 下载文件资源到本地
	let header = {
		Authorization: getToken()
	}
	
	uni.downloadFile({
		url: 'xxx/export',
		header,
		success: (res) => {
			console.log('下载成功:', res);
			if (res.statusCode === 200) {
				this.saveFile(res.tempFilePath);
			}
		},
		fail: (err) => {
			uni.showToast({
				title: '下载失败',
				icon: 'error'
			})
		}
	});
}

保存并打开文件

  • 保存文件到本地
saveFile(tempFilePath) {
	uni.saveFile({
		tempFilePath: this.fileNameEscape(tempFilePath),
		success: (res) => {
			console.log('保存文件成功:', res);
			// 需要保存的文件的临时路径
			let tempFilePath = res.savedFilePath;
			let fileName = `Smile_${new Date().getTime()}.xlsx`; // 目标文件名
			
			// 通过URL参数获取目录对象或文件对象
			plus.io.resolveLocalFileSystemURL(tempFilePath, (entry) => {
				plus.io.resolveLocalFileSystemURL('_doc/', (root) => {
					// 创建或打开当前目录下指定的文件
					root.getFile(fileName, {
						create: true
					}, (file) => {
						// 删除、拷贝目录
						file.remove(() => {
							entry.copyTo(root, fileName, (entry) => {
								console.log('拷贝目录成功:', entry.fullPath);
								
								// 调用第三方程序打开指定的文件
								plus.runtime.openFile(entry.fullPath);
								
							}, (err) => {
								console.log('拷贝目录失败:', err);
							});
						});
					}, (err) => {
						console.log('获取文件失败', err);
					});
				});
			});
		},
		fail: (err) => {
			console.log('保存文件失败', err);
		}
	});
}

处理 iOS 打开文件可能失败问题

  • 下载文件名中包含中文字符时会失败情况
fileNameEscape(filename) {
    if (uni.getSystemInfoSync().platform == "ios") {
        filename = escape(filename);
    }
    return filename;
},

相关API返回数据格式

下载成功
{
    "tempFilePath": "_doc/uniapp_temp_1735639708906/download/export.json",
    "statusCode": 200,
    "errMsg": "downloadFile:ok"
}

保存文件成功
{
    "errMsg": "saveFile:ok",
    "savedFilePath": "_doc/uniapp_save/17356398268860.json"
}

拷贝目录成功
/storage/emulated/0/Android/data/io.dcloud.HBuilder/apps/HBuilder/doc/Smile_1735639826926.xlsx

http://www.kler.cn/a/461180.html

相关文章:

  • 【数据结构】树链刨分
  • Java高频面试之SE-08
  • Python应用指南:高德交通态势数据
  • 网安数学基础期末复习
  • 《HarmonyOS第一课》焕新升级,赋能开发者快速掌握鸿蒙应用开发
  • 慧集通iPaaS集成平台低代码训练-实践篇
  • 王佩丰24节Excel学习笔记——第二十三讲:饼图美化与PPT图表
  • ubuntu查看当前哪些进程在使用网络流量(好用的方法)
  • R语言6种将字符转成数字的方法,写在新年来临之际
  • 第17篇 使用数码管实现计数器___ARM汇编语言程序<四>
  • cad学习 day12客餐厅立面
  • 金融租赁系统助力企业转型与市场竞争力提升
  • 如何通过HTTP API更新Doc
  • 区块链技术在电商API接口中的应用探索与前景分析
  • 17000.机器学习-数字1-9实例
  • WPF使用OpenCvSharp4
  • 矩阵的因子分解2-满秩分解
  • PHP+Redis的基本操作方法
  • 动态吸震器在汽车降噪中的创新应用——电磁正反馈调节系统
  • 【机器学习篇】从新手探寻到算法初窥:数据智慧的开启之门
  • sql特殊查询记录
  • uniapp - 小程序实现摄像头拍照 + 水印绘制 + 反转摄像头 + 拍之前显示时间+地点 + 图片上传到阿里云服务器
  • 线性代数期末复习 [基础篇]
  • Three.js教程004:坐标辅助器与轨道控制器
  • <Uniswap v3 数学洞察>笔记(part 2)
  • 【CSS in Depth 2 精译_099】17.5:基于页面滚动的动画时间线设置(全新)+ 17.6:最后一点建议 + 17.7:本章小结