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.pagination.js 无刷新分页实现步骤分享
May 23 Javascript
jQuery 的全选(全非选)即取得被选中的值使用介绍
Nov 12 Javascript
js中typeof的用法汇总
Dec 12 Javascript
基于JS模仿windows文件按名称排序效果
Jun 29 Javascript
Vue.js每天必学之构造器与生命周期
Sep 05 Javascript
使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
Jan 04 Javascript
canvas实现图片根据滑块放大缩小效果
Feb 24 Javascript
在小程序中使用腾讯视频插件播放教程视频的方法
Jul 10 Javascript
通过javascript实现段落的收缩与展开
Jun 26 Javascript
jQuery Datatables 动态列+跨列合并实现代码
Jan 30 jQuery
浅谈TypeScript 索引签名的理解
Oct 16 Javascript
一篇文章了解正则表达式的替换技巧
Feb 24 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
ThinkPHP调试模式与日志记录概述
2014/08/22 PHP
PHP实现绘制3D扇形统计图及图片缩放实例
2014/10/01 PHP
百度地图api应用标注地理位置信息(js版)
2013/02/01 Javascript
ExtJs中gridpanel分组后组名排序实例代码
2013/12/02 Javascript
JavaScript html5 canvas绘制时钟效果(二)
2016/03/27 Javascript
Javascript获取随机数的实现方法
2016/06/22 Javascript
浅谈js script标签中的预解析
2016/12/30 Javascript
js防抖和节流的深入讲解
2018/12/06 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
vue跳转同一个组件,参数不同,页面接收值只接收一次的解决方法
2019/11/05 Javascript
es6函数中的作用域实例分析
2020/04/18 Javascript
jQuery实现移动端笔触canvas电子签名
2020/05/21 jQuery
Python中字典和JSON互转操作实例
2015/01/19 Python
Python实现的快速排序算法详解
2017/08/01 Python
Python之dict(或对象)与json之间的互相转化实例
2018/06/05 Python
python3实现名片管理系统
2020/11/29 Python
python 用下标截取字符串的实例
2018/12/25 Python
深入了解Python枚举类型的相关知识
2019/07/09 Python
python创建与遍历List二维列表的方法
2019/08/16 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
python kafka 多线程消费者&amp;手动提交实例
2019/12/21 Python
numpy矩阵数值太多不能全部显示的解决
2020/05/14 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
Python 实现PS滤镜的旋涡特效
2020/12/03 Python
Python Socket多线程并发原理及实现
2020/12/11 Python
印尼美容产品购物网站:PerfectBeauty.id
2017/12/01 全球购物
Surfdome西班牙:世界上最受欢迎的生活方式品牌
2019/02/13 全球购物
内科护士实习自我鉴定
2013/10/17 职场文书
机电一体化毕业生求职信
2013/11/02 职场文书
kfc实习自我鉴定
2013/12/14 职场文书
优秀大学生的自我评价
2014/01/16 职场文书
迟到早退检讨书
2014/02/10 职场文书
HR在给员工开具离职证明时,需要注意哪些问题?
2019/07/03 职场文书
Nginx进程管理和重载原理详解
2021/04/22 Servers
Mysql关于数据库是否应该使用外键约束详解说明
2021/10/24 MySQL
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技