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 相关文章推荐
为Yahoo! UI Extensions Grid增加内置的可编辑器
Mar 10 Javascript
$()JS小技巧
Jul 21 Javascript
JS代码判断IE6,IE7,IE8,IE9的函数代码
Aug 02 Javascript
Jquery通过Ajax方式来提交Form表单的具体实现
Nov 07 Javascript
javascript动态向网页中添加表格实现代码
Feb 19 Javascript
setInterval计时器不准的问题解决方法
May 08 Javascript
javascript实现九宫格相加数值相等
May 28 Javascript
Jquery揭秘系列:ajax原生js实现详解(推荐)
Jun 08 Javascript
jQuery post数据至ashx实例详解
Nov 18 Javascript
ajax的分页查询示例(不刷新页面)
Jan 11 Javascript
js自定义瀑布流布局插件
May 16 Javascript
JS鼠标3次点击事件实现代码及扩展思路
Sep 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
虹吸壶是谁发明的?煮出来的咖啡好喝吗
2021/03/04 冲泡冲煮
mysql5详细安装教程
2007/01/15 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
PHP实现批量上传单个文件
2015/12/29 PHP
php微信开发之带参数二维码的使用
2016/08/03 PHP
PHP弱类型语言中类型判断操作实例详解
2017/08/10 PHP
PHP实现对数字分隔加千分号的方法
2019/03/18 PHP
PHP常量及变量区别原理详解
2020/08/14 PHP
jquery 表单取值常用代码
2009/12/22 Javascript
Web 开发中Ajax的Session 超时处理方法
2017/01/19 Javascript
async/await地狱该如何避免详解
2018/05/10 Javascript
详解vue 项目白屏解决方案
2018/10/31 Javascript
vue 开发企业微信整合案例分析
2019/12/02 Javascript
如何基于filter实现网站整体变灰功能
2020/04/17 Javascript
如何在JS文件中获取Vue组件
2020/09/16 Javascript
Vue绑定用户接口实现代码示例
2020/11/04 Javascript
vue的webcamjs集成方式
2020/11/16 Javascript
详解vue实现坐标拾取器功能示例
2020/11/18 Vue.js
Python三元运算实现方法
2015/01/12 Python
在Python中,不用while和for循环遍历列表的实例
2019/02/20 Python
python 为什么说eval要慎用
2019/03/26 Python
python 视频逐帧保存为图片的完整实例
2019/12/10 Python
python中np是做什么的
2020/07/21 Python
如何用Python 加密文件
2020/09/10 Python
html5实现多图片预览上传及点击可拖拽控件
2018/03/15 HTML / CSS
英国内衣连锁店:Boux Avenue
2018/01/24 全球购物
预备党员转正思想汇报
2014/01/12 职场文书
尽职尽责村干部自我鉴定
2014/01/23 职场文书
投标人廉洁自律承诺书
2014/05/26 职场文书
小学教师师德师风演讲稿
2014/08/22 职场文书
解除劳动合同证明书模板
2014/11/20 职场文书
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书
导游词之无锡东林书院
2019/12/11 职场文书
Python中tkinter的用户登录管理的实现
2021/04/22 Python
python中super()函数的理解与基本使用
2021/08/30 Python
SQL中的连接查询详解
2022/06/21 SQL Server