小程序资源下载、解压、保存到本地及本地文件的使用

小程序对资源存储有限一般10M,不要超过限制
思路解析:将资源保存到本地,首先 需要获取到 本地路径 ,然后将文件下载(下载前需要判断文件是否更新,第一次和更新则需要下载,如果存在之前的资源则将其删除),解压(压缩包需要解压,解压完成将压缩包删除,非压缩包略过), 保存到本地路径, (可以自行创建本地目录,把资源统一保存在改目录下),页面中使用本地路径中的资源。

小程序中获取用户本地路径 : wx.env.USER_DATA_PATH      
let fm = wx.getFileSystemManager();    // 文件系统管理器
删除文件夹及文件下的文件使用 fm.rmdir()

下面为整个流程结构代码
一、判断资源是否更新

var isUpdate = '判断资源是否更新的字段';
 if (!isUpdate ) {  // 第一次进入程序
 		wx.setStorageSync('isUpdate', isUpdate );     //
      this.isFile()    //是否创建目录
    } else if (resourcesFileMd5 != newFileMd5) {  //资源更新了
     wx.setStorageSync('isUpdate', isUpdate );
      this.isFile()   
    }else{    // 没有更新,则还是用原来的路径
      var cachePath = '本地路径'
      this.setData({ cachePath: cachePath});
      return;
    }

二、创建本地保存资源的目录
本地目录有了之后,需要判断是否要重新下载资源

var savePath ='需要保存资源的本地目录'
isFile() {
    var that = this;
    fm.access({  //判断目录是否存在
      path: savePath,
      success: function (res) {  //存在
        //存在直接下载文件到该目录
        that.downloadFile()    
      },
      fail: function (err) { //不存在
        fm.mkdir({ //不存在就创建目录
          dirPath: savePath,
          recursive: true,
          success: function (res) {
            that.downloadFile()
          }
        });
      }
    });
  },

三、资源下载
下载前判断是否存在之前的资源,if 存在,则删除再下载

downloadFile() { //下载资源
    var that = this;
    let fileUrl = '下载资源的地址';
    wx.showLoading({
      title: '资源加载中...',
    })
    var unlinkUrl = '需要删除资源的路径'
    this.isUnlink(unlinkUrl);  //删除文件的方法

    wx.downloadFile({
      url: fileUrl,
      filePath: '下载后保存的地址',
      success: function (res) {
        // 压缩包需要解压,非则略过
        that.fileUnzip();  //解压
      },
      fail: function (err) {
        wx.hideLoading();
        wx.showToast({
          title: '下载失败,请稍后重新',
        })
      }
    });
  },

删除文件的方法

isUnlink(unlinkUrl) { //删除文件
    fm.access({  //判断目录是否存在
      path: unlinkUrl,
      success: function (res) {  //存在之前的资源删除重新下载
        fm.rmdir({  //删除目录       删除文件夹及文件下的文件使用rmdir,unlink不能实现改功能
          dirPath: unlinkUrl,
          recursive:true,
          success(res) {
            console.log('旧资源删除成功')
          },
          fail(res) { 
            console.log(res);
          }
        })
      }
    })
  },

四,解压完之后,将资源保存在本地
解压的方法,解压完之后将压缩包删除

  fileUnzip() {  //解压
    var that = this;
    fm.unzip({
      zipFilePath: '需要解压的文件路径',
      targetPath: cashPath,   //解压后保存的地址
      success(res) {
        wx.setStorageSync('cashPath', cashPath)
        that.setData({ cachePath: cashPath});
        
        //解压成功后将压缩包删除
        fm.unlink({
          filePath: orginCachePath + '/' + id +'resource.zip',
          success(res) {
          },
          fail(res) {
            wx.showToast({
              title: '解压失败,请稍后重新',
            })
          }
        })
      }
      complete() {
        wx.hideLoading();
      }
    })
  },

到此,资源下载,解压,保存在本地已经完成,如何使用本地路径下的文件呢?

eg:   cachePath 是你保存在本地的路径地址 ,FileName 改文件下的内容
<image class='bg-pic' mode="widthFix"  src='{{cachePath}}/{{FileName}}'></image>

至此ok

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 微信小程序开发实例zip是指将多个小程序实例文件打包成一个zip文件。这个文件可以方便地在微信小程序开发工具中导入和使用。 开发者在开发微信小程序时,通常会创建多个小程序实例文件,比如页面、组件、工具类等等。为了方便管理和分享这些实例文件,可以将它们打包成一个zip文件。 具体操作步骤如下: 1. 将要打包的小程序实例文件放入一个文件夹中。 2. 右键点击这个文件夹,选择“缩”或“打包”菜单。 3. 选择缩格式为zip,并设置文件保存路径及名称。 4. 等待缩完成,得到一个zip文件。 通过这个zip文件,可以在微信小程序开发工具中进行导入和使用。具体操作步骤如下: 1. 打开微信小程序开发工具,点击“项目”-“导入项目”菜单。 2. 在导入项目弹窗中,选择zip格式,并点击“下一步”按钮。 3. 设置项目导入的路径和名称,并点击“确定”按钮。 4. 等待导入完成,即可在微信小程序开发工具中查看和使用这些小程序实例文件。 需要注意的是,导入后的实例文件可能需要进行相应的配置和调整才能正常运行。例如,需要在app.json文件中添加对应的页面路径、组件路径等配置。 总结:微信小程序开发实例zip是一种方便的文件管理和分享方式,可将多个小程序实例文件打包成一个zip文件。开发者可以通过微信小程序开发工具进行导入和使用,但需注意进行相应的配置和调整。 ### 回答2: 微信小程序开发实例zip是一种文件格式,通常用于将多个文件文件缩成一个单独的文件,方便传输和存储。 在微信小程序开发中,如果我们需要将多个文件打包成一个文件,可以使用zip来实现。具体步骤如下: 1. 准备需要打包的文件文件夹。可以是多个文件,也可以是一个文件夹中的多个文件。 2. 将需要打包的文件文件夹放在同一个目录下。 3. 使用相关的缩软件,如WinRAR或7-Zip等,对这些文件文件夹进行缩,生成一个zip文件。 4. 在微信小程序开发中,通过选择文件的方式将生成的zip文件上传至小程序资源目录中。 5. 在小程序代码中,利用相关的函数对zip文件进行,将其中的文件恢复到原来的状态。例如,可以使用JSZip库进行操作。 6. 完成后,就可以通过小程序的API对后的文件进行相关操作。比如,读取文件内容、展示图片等。 需要注意的是,在之前,我们需要确认用户已经授权允许小程序进行文件操作的权限,以确保能够正常进行操作。 以上就是一个关于微信小程序开发实例zip的简要说明。通过将多个文件打包成一个zip文件,可以方便地进行传输和存储,并通过操作实现对文件的恢复和使用。 ### 回答3: 微信小程序开发实例zip是一种常用的文件缩格式,通过缩多个文件文件夹,可以减小文件的大小,方便传输和存储。 在微信小程序开发中,如果需要将多个文件文件夹打包成zip格式,可以借助第三方库JSZip实现。JSZip是一个轻量级的JavaScript库,可以用来创建和读取zip文件。 下面是一个简单的微信小程序开发实例,展示如何使用JSZip库进行文件打包缩: 1. 首先,在小程序项目中引入JSZip库。可以使用npm安装JSZip,并使用wxss引入: ``` npm install jszip ``` 2. 在小程序的逻辑层(js文件)中,通过require引入JSZip库: ``` const JSZip = require('./path/to/jszip.min.js'); ``` 3. 创建一个JSZip实例并向其添加需要缩的文件文件夹: ``` const zip = new JSZip(); zip.file('file1.txt', 'Hello World!'); zip.file('file2.txt', 'This is a test.'); zip.folder('folder1').file('file3.txt', 'Welcome to folder1.'); ``` 在上面的例子中,我们创建了一个zip实例,并添加了3个文件,file1.txt、file2.txt和folder1/file3.txt。 4. 调用JSZip的generateAsync方法生成文件: ``` zip.generateAsync({ type: "blob" }) .then(function(content) { wx.saveFile({ tempFilePath: content.tempFilePath, success: function(res) { console.log(res.savedFilePath); } }); }); ``` 在上面的例子中,我们调用了generateAsync方法,生成一个Blob对象,然后通过wx.saveFile保存文件,并得到其保存路径。 通过以上步骤,我们可以在微信小程序使用JSZip库进行文件打包缩,并将文件保存到本地。 需要注意的是,由于微信小程序的运行环境限制,JSZip的部分高级功能可能无法在小程序中完全实现,开发者需要根据实际需求选择合适的缩库或者适应某些功能的缺失。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值