用到的api介紹
-
wx.downloadFile()//下載 -
wx.getFileSystemManager()//獲取小程序的文件管理器 -
FileSystemManager.unzip()//解壓 -
FileSystemManager.readdir()//讀取文件夾 -
FileSystemManager.readFile()//讀取文件 -
FileSystemManager.access()//判斷文件/目錄是否存在 -
FileSystemManager.mkdir()//創(chuàng)建文件夾
index.js
-
在
onload中獲取FileSystemManger的全局唯一文件管理器onLoad: function (options) { this.FileSystemManager = wx.getFileSystemManager(); //執(zhí)行下載 this.downloadZipHandler(); }, -
檢查本地文件夾是否存在,不存在執(zhí)行創(chuàng)建文件夾,然后下載。如果存在直接下載。
本地用戶文件是從
1.7.0版本開始新增的概念。我們提供了一個(gè)用戶文件目錄給開發(fā)者,開發(fā)者對(duì)這個(gè)目錄有完全自由的讀寫權(quán)限。通過wx.env.USER_DATA_PATH可以獲取到這個(gè)目錄的路徑。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) } }) }, -
讀取具體文件,可以拿到文件的內(nèi)容
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) } }) },