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 相关文章推荐
用javascript编写的第一人称射击游戏
Feb 25 Javascript
js 发个判断字符串是否为符合标准的函数
Apr 27 Javascript
真正的JQuery.ajax传递中文参数的解决方法
May 28 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
Oct 16 Javascript
javascript避免数字计算精度误差的方法详解
Mar 05 Javascript
JsRender实用入门教程
Oct 31 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
Feb 20 Javascript
javascript 应用小技巧方法汇总
Jul 05 Javascript
JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端
Oct 08 Javascript
jQuery 实时保存页面动态添加的数据的示例
Aug 14 jQuery
vue-awesome-swiper滑块插件使用方法详解
Nov 27 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
Dec 12 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
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
2014/06/19 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
2015/03/02 PHP
php清除和销毁session的方法分析
2015/03/19 PHP
PHP实现长文章分页实例代码(附源码)
2016/02/03 PHP
Laravel下生成验证码的类
2017/11/15 PHP
javascript 自动填写表单的实现方法
2010/04/09 Javascript
基于jquery的滑动样例代码
2010/11/20 Javascript
浅谈Javascript中substr和substring的区别
2015/09/30 Javascript
JavaScript面向对象编写购物车功能
2016/08/19 Javascript
angularjs中ng-attr的用法详解
2016/12/31 Javascript
老生常谈jquery id选择器和class选择器的区别
2017/02/12 Javascript
vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法
2017/02/22 Javascript
微信小程序实现实时圆形进度条的方法示例
2017/02/24 Javascript
解决webpack打包速度慢的解决办法汇总
2017/07/06 Javascript
jQuery中ajax获取数据赋值给页面的实例
2017/12/31 jQuery
详解package.json版本号规则
2019/08/01 Javascript
vue-router懒加载的3种方式汇总
2021/02/28 Vue.js
[57:22]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第五场
2018/04/10 DOTA
跟老齐学Python之类的细节
2014/10/13 Python
基于python编写的微博应用
2014/10/17 Python
在Python中利用Into包整洁地进行数据迁移的教程
2015/03/30 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
2019/12/05 Python
Python基于network模块制作电影人物关系图
2020/06/19 Python
安装不同版本的tensorflow与models方法实现
2021/02/20 Python
css3实现wifi信号逐渐增强效果实例
2017/08/09 HTML / CSS
详解html2canvas截图不能截取圆角图片的解决方案
2018/01/30 HTML / CSS
HTML5实现直播间评论滚动效果的代码
2020/05/27 HTML / CSS
DHC中国官方购物网站:日本通信销售No.1化妆品
2016/08/20 全球购物
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
武汉世纪畅想数字传播有限公司.NET笔试题
2014/07/22 面试题
党员廉洁自律承诺书
2014/05/26 职场文书
公司更名通知函
2015/04/24 职场文书
无工作证明怎么写
2015/06/15 职场文书
导游词之台湾安平古堡
2019/12/25 职场文书
MySQL系列之六 用户与授权
2021/07/02 MySQL
JavaScript 中for/of,for/in 的详细介绍
2021/11/17 Javascript