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


Posted in Javascript onMay 24, 2018

下面一段代码给大家分享基于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实现图片的本地缓存示例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JQuery小知识
Oct 15 Javascript
JS中类或对象的定义说明
Mar 10 Javascript
AngularJS基础学习笔记之表达式
May 10 Javascript
jquery ajax局部加载方法详解(实现代码)
May 12 Javascript
快速解决js中window.location.href不工作的问题
Nov 02 Javascript
angular bootstrap timepicker TypeError提示怎么办
Jun 13 Javascript
基于JS实现网页中的选项卡(两种方法)
Jun 16 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
Nov 24 Javascript
Angular6 Filter实现页面搜索的示例代码
Dec 02 Javascript
bootstrap tooltips在 angularJS中的使用方法
Apr 10 Javascript
使用原生javascript开发计算器实例代码
Feb 21 Javascript
手写实现JS中的new
Nov 07 Javascript
vue组件name的作用小结
May 23 #Javascript
linux 后台运行node服务指令方法
May 23 #Javascript
node.js部署之启动后台运行forever的方法
May 23 #Javascript
jquery引入外部CDN 加载失败则引入本地jq库
May 23 #jQuery
jQuery实现form表单序列化转换为json对象功能示例
May 23 #jQuery
让Vue也可以使用Redux的方法
May 23 #Javascript
微信小程序排坑指南详解
May 23 #Javascript
You might like
十大催泪虐心动漫电影,有几部你还没看
2020/03/04 日漫
PHP中=赋值操作符对不同数据类型的不同行为
2011/01/02 PHP
yii2.0实现pathinfo的形式访问的配置方法
2016/04/06 PHP
thinkPHP5.1框架中Request类四种调用方式示例
2019/08/03 PHP
jQuery Tools tab使用介绍
2012/07/14 Javascript
Raphael带文本标签可拖动的图形实现代码
2013/02/20 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
jQuery头像裁剪工具jcrop用法实例(附演示与demo源码下载)
2016/01/22 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
2016/02/26 Javascript
JS中使用正则表达式g模式和非g模式的区别
2017/04/01 Javascript
WebSocket的通信过程与实现方法详解
2018/04/29 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
2019/04/20 Javascript
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
2019/12/23 Javascript
在vue-cli3中使用axios获取本地json操作
2020/07/30 Javascript
vue-simple-uploader上传成功之后的response获取代码
2020/09/07 Javascript
记录一次websocket封装的过程
2020/11/23 Javascript
Python3 模块、包调用&amp;路径详解
2017/10/25 Python
Python实现的计数排序算法示例
2017/11/29 Python
pytorch-RNN进行回归曲线预测方式
2020/01/14 Python
Python-jenkins模块获取jobs的执行状态操作
2020/05/12 Python
学生自我鉴定模板
2013/12/30 职场文书
技能比赛获奖感言
2014/02/14 职场文书
感恩母亲节活动方案
2014/03/04 职场文书
实习单位评语
2014/04/26 职场文书
关于雷锋的演讲稿
2014/05/10 职场文书
银行柜员与客户起冲突检讨书
2014/09/27 职场文书
2014年技术工作总结范文
2014/11/20 职场文书
一年级数学下册复习计划
2015/01/17 职场文书
教师工作决心书
2015/02/04 职场文书
诚信考试承诺书范文
2015/04/29 职场文书
党小组鉴定意见
2015/06/02 职场文书
开学季:喜迎新生,迎新标语少不了
2019/11/07 职场文书
话题作文之成长
2019/12/09 职场文书
Go 自定义package包设置与导入操作
2021/05/06 Golang
pytorch通过训练结果的复现设置随机种子
2021/06/01 Python
方法汇总:Python 安装第三方库常用
2022/04/26 Python