用到的api介绍
-
wx.downloadFile()
//下载 -
wx.getFileSystemManager()
//获取小程序的文件管理器 -
FileSystemManager.unzip()
//解压 -
FileSystemManager.readdir()
//读取文件夹 -
FileSystemManager.readFile()
//读取文件 -
FileSystemManager.access()
//判断文件/目录是否存在 -
FileSystemManager.mkdir()
//创建文件夹
index.js
-
在
onload
中获取FileSystemManger
的全局唯一文件管理器onLoad: function (options) { this.FileSystemManager = wx.getFileSystemManager(); //执行下载 this.downloadZipHandler(); },
-
检查本地文件夹是否存在,不存在执行创建文件夹,然后下载。如果存在直接下载。
本地用户文件是从
1.7.0
版本开始新增的概念。我们提供了一个用户文件目录给开发者,开发者对这个目录有完全自由的读写权限。通过wx.env.USER_DATA_PATH
可以获取到这个目录的路径。downloadZipHandler() { let { FileSystemManager } = this; let that = this; FileSystemManager.access({ path: `${wx.env.USER_DATA_PATH}/kk`, success(res) { console.log('success', res) DownloadHandler(); }, fail(err) { console.log('fail', err) FileSystemManager.mkdir({ dirPath: `${wx.env.USER_DATA_PATH}/kk`, success(res) { console.log('success', res) DownloadHandler(); }, fail(err) { console.log('fail', err); } }) } }) function DownloadHandler() { wx.downloadFile({ url: 'https://localhost/book.zip', filePath: `${wx.env.USER_DATA_PATH}/kk/book.zip`, success(res) { console.log(res); that.setData({ bookZipPath: res.filePath }) }, fail(err) { console.log('fail', err) } }) } },
-
下载完成后,解压到本地文件夹
unzipHandler() { let { FileSystemManager } = this; let { bookZipPath } = this.data; FileSystemManager.unzip({ zipFilePath: bookZipPath, targetPath: `${wx.env.USER_DATA_PATH}/jj`, success(res) { console.log(res); }, fail(err) { console.log('fail', err) } }) },
-
读取文件夹里的文件列表,可以得到文件夹下的文件名列表
readDirHandler() { let { FileSystemManager } = this; FileSystemManager.readdir({ dirPath: `${wx.env.USER_DATA_PATH}/jj`, success(res) { console.log(res); }, fail(err) { console.log('fail', err) } }) },
-
读取具体文件,可以拿到文件的内容
readFileHandler() { let { FileSystemManager } = this; FileSystemManager.readFile({ filePath: `${wx.env.USER_DATA_PATH}/jj/eric.json`, encoding: 'utf8', success(res) { console.log(res); let result = JSON.parse(res.data); console.log(result); }, fail(err) { console.log('fail', err) } }) },