当前位置: 移动技术网 > IT编程>脚本编程>vue.js > Vue+mui实现图片的本地缓存示例代码

Vue+mui实现图片的本地缓存示例代码

2018年05月29日  | 移动技术网IT编程  | 我要评论

游戏守望者2.0.1,dianxinos,未婚妈咪总裁的一夜情人

下面一段代码给大家分享基于vue+mui实现图片的本地缓存,具体代码如下所示:

const menu = {
 state: {
  products: {},
  global_config:global_config['global_config']
 },
 mutations: {
  get_product: function (state, products) {
    //商品列表
    state.products = products;
    for(let i = 0; i < state.products.length; i++){
      if(state.products[i]['image'] != null){
        // state.products[i]['image'] = state.global_config['base64header'] + state.products[i]['image'];
        //下载图片到本地
        this.commit('imgcache',state.products[i]);
      }else{
        //添加默认图片
        state.products[i]['image'] = require("../assets/file.png");
      }
    }
  },
  imgcache: function (state,imgobj) {
    mui.plusready(function(){
      // 1. 转换网络图片地址为本地缓存图片路径,判断该图片是否存在本地缓存
      // http://...jpg -> md5
      // 缓存目录 _downloads/image/(md5).jpg
      let image_url      = imgobj.image;
      let image_md5      = md5(image_url);
      // 缓存本地图片url
      let local_image_url   = '_downloads/image/'+image_md5+'.jpg';
      // 平台绝对路径
      let absolute_image_path = plus.io.convertlocalfilesystemurl(local_image_url);
      console.log(absolute_image_path);
      // 判断本地是否存在该文件,存在就就直接使用,否则就下载
      plus.io.resolvelocalfilesystemurl( absolute_image_path, function( entry ) {
        if(entry){
          imgobj.image = plus.io.convertlocalfilesystemurl(local_image_url);
        }else{
          download_img();
        }
      }, function ( e ) {
        console.log("resolve file url failed: ");
        download_img();
      } );
      function download_img(){
        // filename:下载任务在本地保存的文件路径
        let download_task = plus.downloader.createdownload(image_url, {
          filename: local_image_url
        }, function(download, status) {
          // 下载失败,删除本地临时文件
          if(status != 200){
            console.log('下载失败,status'+status);
            if(local_image_url != null){
              plus.io.resolvelocalfilesystemurl(local_image_url, function(entry) {
                entry.remove(function(entry) {
                  console.log("临时文件删除成功" + local_image_url);
                  // 重新下载图片
                  download_img();
                }, function(e) {
                  console.log("临时文件删除失败" + local_image_url);
                });
              });
            }
          }else{
            // 把下载成功的图片显示
            // 将本地url路径转换成平台绝对路径
            console.log("下载成功" + local_image_url);
            imgobj.image = plus.io.convertlocalfilesystemurl(local_image_url);
          }
        });
        download_task.start();
      }    
    });
  }
 },
 actions: {
 }
}

总结

以上所述是小编给大家介绍的vue+mui实现图片的本地缓存示例代码,希望对大家有所帮助

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网