微信小程序文件相关操作(新建文件夹、下载、解压、读取等)

用到的api介绍
  • wx.downloadFile() //下载
  • wx.getFileSystemManager() //获取小程序的文件管理器
  • FileSystemManager.unzip()//解压
  • FileSystemManager.readdir() //读取文件夹
  • FileSystemManager.readFile() //读取文件
  • FileSystemManager.access()//判断文件/目录是否存在
  • FileSystemManager.mkdir() //创建文件夹
index.js
  1. onload中获取FileSystemManger的全局唯一文件管理器

    onLoad: function (options) {
      this.FileSystemManager = wx.getFileSystemManager();
      //执行下载
      this.downloadZipHandler();
    },
    
  2. 检查本地文件夹是否存在,不存在执行创建文件夹,然后下载。如果存在直接下载。

    本地用户文件是从 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)
            }
          })
        }
      },
    
  3. 下载完成后,解压到本地文件夹

    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)
          }
        })
      },
    
  4. 读取文件夹里的文件列表,可以得到文件夹下的文件名列表

    readDirHandler() {
        let { FileSystemManager } = this;
        FileSystemManager.readdir({
          dirPath: `${wx.env.USER_DATA_PATH}/jj`,
          success(res) {
            console.log(res);
          },
          fail(err) {
            console.log('fail', err)
          }
        })
      },
    
  5. 读取具体文件,可以拿到文件的内容

    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)
          }
        })
      },
    

你可能感兴趣的:(微信小程序文件相关操作(新建文件夹、下载、解压、读取等))