开发微信小程序尝试保存文件时,会提示saveFile:fail tempFilePath file not exist
错误,是什么问题呢,接下来带你如何分析和解决问题
文章目录
- 1. 定位问题
- 2. 解决问题
1. 定位问题
首先,看一下代码怎么写得,如下所示
wx.saveFile({
tempFilePath:tempFilePath,
success: (res)=>{
console.log('writeFile '+tempFilePath, res);
}
})
或者,因wx.saveFile()
将会弃用,就这样写得
wx.getFileSystemManager().saveFile({
tempFilePath:tempFilePath,
filePath:wx.env.USER_DATA_PATH+'/note',
success:(res)=>{
console.log('writeFile '+tempFilePath, res);
}
})
打印一下tempFilePath
的值,看它是啥,如下图所示,发现http://usr...
,不是临时文件的保存路径
writeFile
http://usr/note_1669000774894.txt
2. 解决问题
错误原因看到了,来分析一下,看看官方文档,保存的文件权限,如下所示,其中
接口、组件 | 说明 | 读 | 写 |
---|---|---|---|
http://tmp | 本地临时文件 | 有 | 无 |
http://usr | 本地用户文件 | 有 | 有 |
🔈报的错误应该是这样
如果tempFilePath
是http://usr...
,这个就会提示saveFile:fail tempFilePath file not exist
错误,不是临时文件的路径,必须是http://tmp
临时文件的路径应该就不会报错了。
是否也想过问题,不能保存到内存卡根目录下吗,目前来看,是不可以的,没得办法😔。
可是,保存到http://usr
用户文件的路径中,那之后怎么读取过来呢,参考如下代码,调试日志打印出来的就是之前保存的用户文件列表了,通过这个方式就能获取本地文件
wx.getFileSystemManager().readdir({
dirPath:wx.env.USER_DATA_PATH,
success:(res)=>{
console.log('dir',res)
}
})
如果要想在电脑上找到存放的用户文件,就点击在微信开发工具上的详情按钮,如下图所示,然后再点击文件系统
对应的
蓝
色
的
路
径
\color{#00f}{蓝色的路径}
蓝色的路径 就可打开目录查看
💡 有一点可以放心,官方文档的清理策略有说了,只要小程序不被删除,那存放在用户文件的路径下文件是不会突然消失的。