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 不能释放内存.
Sep 07 Javascript
js DOM的学习笔记
Dec 22 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
May 11 Javascript
详解AngularJS中module模块的导入导出
Dec 10 Javascript
bootstrap3 兼容IE8浏览器!
May 02 Javascript
详解数组Array.sort()排序的方法
May 09 Javascript
浅谈Vue SSR 的 Cookies 问题
Nov 20 Javascript
iconfont的三种使用方式详解
Aug 05 Javascript
vue3.0 CLI - 1 - npm 安装与初始化的入门教程
Sep 14 Javascript
VueJS 组件参数名命名与组件属性转化问题
Dec 03 Javascript
Vue + element 实现多选框组并保存已选id集合的示例代码
Jun 03 Javascript
微信小程序实现日历签到
Sep 21 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中http与https跨域共享session的解决方法
2014/12/20 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
2019/10/18 PHP
讨论javascript(一)工厂方式 js面象对象的定义方法
2009/12/15 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
2011/12/31 Javascript
JS获取计算机mac地址以及IP的实现方法
2014/01/08 Javascript
Windows系统下Node.js的简单入门教程
2015/06/23 Javascript
jQuery实现图片预加载效果
2015/11/27 Javascript
JavaScript知识点总结(四)之逻辑OR运算符详解
2016/05/31 Javascript
Jquery基础之事件操作详解
2016/06/14 Javascript
jQuery实现大图轮播
2017/02/13 Javascript
微信小程序中页面FOR循环和嵌套循环
2017/06/21 Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
2017/09/19 jQuery
Vue实现底部侧边工具栏的实例代码
2018/09/03 Javascript
Nodejs调用Dll模块的方法
2018/09/17 NodeJs
vue如何实现自定义底部菜单栏
2019/07/01 Javascript
npm ci命令的基本使用方法
2020/09/20 Javascript
Python如何快速实现分布式任务
2017/07/06 Python
使用python根据端口号关闭进程的方法
2018/11/06 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
2019/06/17 Python
检测python爬虫时是否代理ip伪装成功的方法
2019/07/12 Python
pycharm通过anaconda安装pyqt5的教程
2020/03/24 Python
python 操作mysql数据中fetchone()和fetchall()方式
2020/05/15 Python
Python常用断言函数实例汇总
2020/11/30 Python
世界领先的电子书网站:eBooks.com(在线购买小说、非小说和教科书)
2019/03/30 全球购物
什么是方法的重载
2013/06/24 面试题
俄语翻译实习生的自我评价分享
2013/11/06 职场文书
计算机专业学生求职信分享
2013/12/15 职场文书
社区中秋节活动方案
2014/01/29 职场文书
市场营销管理制度
2014/01/29 职场文书
材料加工工程求职信
2014/02/19 职场文书
经典英文广告词
2014/03/18 职场文书
银行竞聘上岗演讲稿
2014/09/12 职场文书
警示教育片观后感
2015/06/17 职场文书
校园新闻稿范文
2015/07/18 职场文书
优秀教师工作总结2015
2015/07/22 职场文书
面试必问:圣杯布局和双飞翼布局的区别
2021/05/13 HTML / CSS