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中通过URL传递汉字的方法
Apr 09 Javascript
CheckBoxList多选样式jquery、C#获取选择项
Sep 06 Javascript
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
Nov 03 Javascript
JQuery操作iframe父页面与子页面的元素与方法(实例讲解)
Nov 20 Javascript
超级给力的JavaScript的React框架入门教程
Jul 02 Javascript
JS实现灵巧的下拉导航效果代码
Aug 25 Javascript
jQuery获取及设置表单input各种类型值的方法小结
May 24 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
Oct 26 Javascript
自定义require函数让浏览器按需加载Js文件
Nov 24 Javascript
canvas 画布在主流浏览器中的尺寸限制详细介绍
Dec 15 Javascript
layui table设置某一行的字体颜色方法
Sep 05 Javascript
vue使用recorder.js实现录音功能
Nov 22 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
PHP has encountered an Access Violation
2007/01/15 PHP
php查看session内容的函数
2008/08/27 PHP
php生成curl命令行的方法
2015/12/14 PHP
PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
2019/06/08 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
jQuery live
2009/05/15 Javascript
JavaScript 字符串乘法
2009/08/20 Javascript
javascript showModalDialog模态对话框使用说明
2009/12/31 Javascript
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
js里怎么取select标签里的值并修改
2012/12/10 Javascript
javascript判断office版本示例
2014/04/11 Javascript
require.js深入了解 require.js特性介绍
2014/09/04 Javascript
js实现iframe自动自适应高度的方法
2015/02/17 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
2016/07/14 Javascript
javascript history对象详解
2017/02/09 Javascript
React之PureComponent的使用作用
2018/07/10 Javascript
微信上传视频文件提示(推荐)
2018/11/22 Javascript
浅谈webpack性能榨汁机(打包速度优化)
2019/01/09 Javascript
详解如何给React-Router添加路由页面切换时的过渡动画
2019/04/25 Javascript
jQuery单页面文字搜索插件jquery.fullsearch.js的使用方法
2020/02/04 jQuery
vue实现员工信息录入功能
2020/06/11 Javascript
python实现简单购物商城
2016/05/21 Python
Python 编程速成(推荐)
2019/04/15 Python
PyCharm永久激活方式(推荐)
2020/09/22 Python
解决python虚拟环境切换无效的问题
2020/04/30 Python
如何在Python对Excel进行读取
2020/06/04 Python
解决tensorflow 释放图,删除变量问题
2020/06/23 Python
python中uuid模块实例浅析
2020/12/29 Python
大学生旷课检讨书
2014/01/22 职场文书
运动会100米解说词
2014/01/23 职场文书
促销活动总结怎么写
2014/06/25 职场文书
离婚财产分配协议书
2014/10/21 职场文书
奖励通知
2015/04/22 职场文书
小学安全工作总结2015
2015/05/18 职场文书
校园安全教育心得体会
2016/01/15 职场文书