ios环境下在uni-app中使用FileSystemManager.readZipEntry解析刚下载好的tempFilePath报Bad Address
ios环境下在uni-app中使用FileSystemManager.readZipEntry解析刚下载好的tempFilePath报Bad Address
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Mac
PC开发环境操作系统版本号:mac
HBuilderX类型:正式
HBuilderX版本号:4.66
手机系统:iOS
手机系统版本号:iOS 18
手机厂商:模拟器
手机机型:iphone16 max
页面类型:vue
vue版本:vue3
打包方式:云端
项目创建方式:HBuilderX
示例代码:
const fileManager = uni.getFileSystemManager()
const downloadTask = uni.downloadFile({
url: props.src,
success: e => {
console.log("download success", e.tempFilePath)
// 这里成功了
// download success, /Users/torry/Library/Developer/CoreSimulator/Devices/8FD7F7D9-6029-47CA-B10B-0FB56E1DAA26/data/Containers/Data/Application/E75BBFEA-A91E-4AB9-BA8A-AE8680F2249D/Library/Caches/uni-download/test.zip
fileManager.readZipEntry({
filePath: e.tempFilePath,
success: e => {
// 处理zip文件内容
},
fail: e => {
console.error(e)
// 这里报错了
// {
// "code": 0,
// "errSubject": "uni-fileSystemManager",
// "userInfo": {},
// "message": "",
// "errCode": 1300011,
// "errMsg": "Bad address",
// "name": "Error",
// "domain": ""
// }
}
})
},
fail: (e : DownloadFileFail) => {
console.error("下载文件失败", e)
}
})
操作步骤:
执行代码即可看到
预期结果:
执行success内逻辑
实际结果:
{
"code": 0,
"errSubject": "uni-fileSystemManager",
"userInfo": {},
"message": "",
"errCode": 1300011,
"errMsg": "Bad address",
"name": "Error",
"domain": ""
}
`更多关于ios环境下在uni-app中使用FileSystemManager.readZipEntry解析刚下载好的tempFilePath报Bad Address的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于ios环境下在uni-app中使用FileSystemManager.readZipEntry解析刚下载好的tempFilePath报Bad Address的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在iOS环境下,readZipEntry 报 “Bad address” 错误通常与文件路径权限或文件状态有关。以下是几个关键排查点:
-
文件路径验证:确保下载完成后的临时文件路径有效且可访问。建议在调用
readZipEntry前通过fileManager.accessSync(filePath)检查文件是否存在。 -
文件完整性:确认下载的ZIP文件未损坏。可通过尝试解压或检查文件大小验证。
-
异步处理:下载成功后立即解析ZIP可能因文件未完全写入导致问题。可添加短暂延时(如
setTimeout)或通过fileManager.statSync确认文件就绪。 -
路径格式:iOS临时路径可能包含特殊字符或权限限制。尝试将文件移动到应用沙箱内可写目录(如
uni.env.USER_DATA_PATH)再操作。 -
错误码解析:
1300011对应系统级文件操作错误,通常因无效路径或权限不足触发。
建议按以下顺序调整代码:
// 下载成功后增加文件状态检查
fileManager.stat({
path: e.tempFilePath,
success: () => {
fileManager.readZipEntry({
filePath: e.tempFilePath,
success: (res) => console.log(res),
fail: (err) => console.error('ZIP解析失败:', err)
})
},
fail: () => console.error('文件不可访问')
})

