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 相关文章推荐
XHTML-Strict 内允许出现的标签
Dec 11 Javascript
javascript 面向对象全新理练之数据的封装
Dec 03 Javascript
js实现文章文字大小字号功能完整实例
Nov 01 Javascript
js实现每日自动换一张图片的方法
May 04 Javascript
JavaScript实现复制或剪切内容到剪贴板功能的方法
May 23 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
Nov 01 Javascript
JavaScript实现快速排序的方法分析
Jan 10 Javascript
对Vue.js之事件的绑定(v-on: 或者 @ )详解
Sep 15 Javascript
使用 vue 实例更好的监听事件及vue实例的方法
Apr 22 Javascript
微信小程序Flex布局用法深入浅出分析
Apr 25 Javascript
JS设置自定义快捷键并实现图片上下左右移动
Oct 17 Javascript
js对象属性名驼峰式转下划线的实例代码
Sep 17 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 接口类与抽象类的实际作用
2009/11/26 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
PHP技术开发微信公众平台
2015/07/22 PHP
PHP解压tar.gz格式文件的方法
2016/02/14 PHP
Yii框架实现邮箱激活的方法【数字签名】
2016/10/18 PHP
JQueryEasyUI Layout布局框架的使用
2013/04/08 Javascript
javascript生成json数据简单示例分享
2014/02/14 Javascript
Javascript基础教程之数据类型 (数值 Number)
2015/01/18 Javascript
javascript正则表达式之search()用法实例
2015/01/19 Javascript
Angularjs中$http以post请求通过消息体传递参数的实现方法
2016/08/05 Javascript
javascript设置文本框光标的方法实例小结
2016/11/04 Javascript
bootstrap提示标签、提示框实现代码
2016/12/28 Javascript
从零开始学习Node.js系列教程二:文本提交与显示方法
2017/04/13 Javascript
vue axios用法教程详解
2017/07/23 Javascript
H5+C3+JS实现五子棋游戏(AI篇)
2020/05/28 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
2018/10/16 Javascript
详解搭建一个vue-cli的移动端H5开发模板
2020/01/17 Javascript
[00:58]PWL开团时刻DAY5——十人开雾0换5
2020/11/04 DOTA
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
2016/04/13 Python
使用XML库的方式,实现RPC通信的方法(推荐)
2017/06/14 Python
Python实现一个简单的验证码程序
2017/11/03 Python
Python学习_几种存取xls/xlsx文件的方法总结
2018/05/03 Python
Python设计模式之装饰模式实例详解
2019/01/21 Python
利用ImageAI库只需几行python代码实现目标检测
2019/08/09 Python
解析python 类方法、对象方法、静态方法
2020/08/15 Python
乌克兰网上服装店:Bolf.ua
2018/10/30 全球购物
如何打开WebSphere远程debug
2014/10/10 面试题
存储过程和sql语句的优缺点
2014/07/02 面试题
家长会演讲稿范文
2014/01/10 职场文书
客服部工作职责范本
2014/02/14 职场文书
土地转让协议书
2014/04/15 职场文书
欠款纠纷起诉状
2015/05/19 职场文书
家长反馈意见及建议
2015/06/03 职场文书
python实现简单的名片管理系统
2021/04/26 Python
Pytorch可视化的几种实现方法
2021/06/10 Python
Axios取消重复请求的方法实例详解
2021/06/15 Javascript