uniapp——APP读取bin文件,解析文件的数据内容(一)

文章目录

请求本地文件系统对象,读取文件的数据内容

API文档
场景: 蓝牙设备升级,根据用户选择bin文件,读取文件数据内容;分包发送给蓝牙设备;

读取.bin文件

  • 通过 requestFileSystem 获取指定的文件
  • 应用私有资源目录,对应常量有4种:具体使用请查看文档
    • plus.io.PRIVATE_WWW
    • plus.io.PRIVATE_DOC
    • plus.io.PUBLIC_DOWNLOADS
    • plus.io.PUBLIC_DOWNLOADS
  • 分包发送数据:请查看
javascript 复制代码
/**
 * @description 读取文件内容,根据实际情况处理数据;
 * @param {String} filePath 文件路径
 * @returns {Object} 
 */
const getFileSystem = (filePath) => {
	filePath = filePath || '/static/B1.1.2.bin'; // TEST
	return new Promise((resolve, reject) => {
		plus.io.requestFileSystem(plus.io.PRIVATE_WWW, (fs) => {
			fs.root.getFile(filePath, {
				create: false
			}, (fileEntry) => {
				fileEntry.file((file) => {
					console.log('file:', file);
					// 创建读取文件对象 创建读取文件对象
					const fileReader = new plus.io.FileReader();
					
					// 以URL编码格式读取文件数据内容 读取文件的数据内容,并将数据内容进行URL编码
					fileReader.readAsDataURL(file);
					
					fileReader.onload = (evt) => {
						let strs = evt.target.result;
						
						// 将 Base64 字符串转成 ArrayBuffer 对象
						let arrayBuffer = uni.base64ToArrayBuffer(strs);
						
						// 返回数据
						resolve({
							size: file.size,
							arrayBuffer
						});
					}
					fileReader.onerror = (err) => {
						console.log('文件读取失败');
						reject(err);
					}
				})
			}, (error) => {
				console.log('读取文件报错:', error);
			})
		})
	})
}

file对象返回数据格式

*例:放在本地 /static/目录下.bin文件

javascript 复制代码
{
    "size": 98036,
    "type": "application/macbinary",
    "name": "1.0.44.bin",
    "lastModifiedDate": "2024-12-25T08:39:07.022Z",
    "fullPath": "/Users/xxx/Library/Developer/CoreSimulator/Devices/FBAB31F1xxx/data/Containers/Data/Application/F9314A28xxx/Documents/Pandora/apps/F9C07xxx/www/static/1.0.44.bin"

}

踩过的坑

  • 读取本地文件:安卓、iOS设备均正常读取;
  • 读取_doc/uniapp_temp开头路径:安卓能正常,iOS设备 得到 size为 0 情况
    • 更换目录常量也不行,读取失败:{"code":1, "message":"文件没有发现"}
    • 解决:
      • 可以先把文件下载到本地,再通过本地路径去读取
      • requestFileSystem 修改为 resolveLocalFileSystemURL ,具体请查看下一篇文章;
相关推荐
2501_915909069 小时前
“绑定 HTTPS” 的工程全流程 从证书配置到真机验证与故障排查
网络协议·http·ios·小程序·https·uni-app·iphone
2501_9159184110 小时前
iOS 混淆实战 多工具组合完成 IPA 混淆、加固与工程化落地(iOS混淆|IPA加固|无源码混淆|Ipa Guard|Swift Shield)
android·ios·小程序·https·uni-app·iphone·webview
游戏开发爱好者812 小时前
如何系统化掌握 iOS 26 App 耗电管理,多工具协作
android·macos·ios·小程序·uni-app·cocoa·iphone
BumBle13 小时前
uniapp AI聊天应用技术解析:实现流畅的Streaming聊天体验(基础版本)
前端·uni-app
2501_9159214314 小时前
运营日志驱动,在 iOS 26 上掌握 App 日志管理实践
android·macos·ios·小程序·uni-app·cocoa·iphone
Q_Q196328847519 小时前
python+uniapp基于微信美食点餐系统小程序
spring boot·python·微信·django·flask·uni-app·node.js
阿金要当大魔王~~20 小时前
uniapp 请求携带数据 \\接口传值 \\ map遍历数据
前端·javascript·uni-app
2501_915106321 天前
HTTPS 爬虫实战指南 从握手原理到反爬应对与流量抓包分析
爬虫·网络协议·ios·小程序·https·uni-app·iphone
2501_916007471 天前
iOS 上架技术支持全流程解析,从签名配置到使用 开心上架 的实战经验分享
android·macos·ios·小程序·uni-app·cocoa·iphone
2501_916007472 天前
提升 iOS 26 系统流畅度的实战指南,多工具组合监控
android·macos·ios·小程序·uni-app·cocoa·iphone