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 相关文章推荐
另类调用flash无须激活的方法
Dec 27 Javascript
锋利的jQuery jQuery中的DOM操作
Mar 21 Javascript
自动刷新网页,自动刷新当前页面,JS调用
Jun 24 Javascript
JavaScript实现LI列表数据绑定的方法
Aug 04 Javascript
jQuery ajax读取本地json文件的实例
Oct 31 jQuery
jQuery+ajax实现动态添加表格tr td功能示例
Apr 23 jQuery
vue props传值失败 输出undefined的解决方法
Sep 11 Javascript
express 项目分层实践详解
Dec 10 Javascript
更优雅的微信小程序骨架屏实现详解
Aug 07 Javascript
Vue数组响应式操作及高阶函数使用代码详解
Aug 01 Javascript
微信小程序自定义底部弹出框动画
Nov 18 Javascript
在JavaScript中如何使用宏详解
May 06 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版
2006/10/09 PHP
定制404错误页面,并发信给管理员的程序
2006/10/09 PHP
PHPnow安装服务[apache_pn]失败的问题的解决方法
2010/09/10 PHP
CI框架中libraries,helpers,hooks文件夹详细说明
2014/06/10 PHP
PHP对象实例化单例方法
2017/01/19 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
2019/05/05 PHP
js form action动态修改方法
2008/11/04 Javascript
jquery获取下拉列表的值为null的解决方法
2011/03/18 Javascript
JS跨域问题详解
2014/11/25 Javascript
基于javascript实现checkbox复选框实例代码
2016/01/28 Javascript
js实现的xml对象转json功能示例
2016/12/24 Javascript
详谈JavaScript的闭包及应用
2017/01/17 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
2017/09/01 Javascript
深入浅析JavaScript中的RegExp对象
2017/09/18 Javascript
vue单个组件实现无限层级多选菜单功能
2018/04/10 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
2020/07/28 Javascript
微信小程序实现转盘抽奖
2020/09/21 Javascript
[30:55]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第二场 11.18
2020/11/18 DOTA
Python函数式编程指南(二):从函数开始
2015/06/24 Python
python 转换 Javascript %u 字符串为python unicode的代码
2016/09/06 Python
Python 登录网站详解及实例
2017/04/11 Python
详解TensorFlow在windows上安装与简单示例
2018/03/05 Python
Python中return self的用法详解
2018/07/27 Python
对python:threading.Thread类的使用方法详解
2019/01/31 Python
Python检测数据类型的方法总结
2019/05/20 Python
python 实现视频 图像帧提取
2019/12/10 Python
Tensorflow 模型转换 .pb convert to .lite实例
2020/02/12 Python
Pytorch环境搭建与基本语法
2020/06/03 Python
Python趣味入门教程之循环语句while
2020/08/26 Python
Python实现石头剪刀布游戏
2021/01/20 Python
详解HTML5表单新增属性
2016/12/21 HTML / CSS
化学实验员岗位职责
2013/12/28 职场文书
2019学校运动会开幕词
2019/05/13 职场文书
Python+uiautomator2实现自动刷抖音视频功能
2021/04/29 Python
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python