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 相关文章推荐
js中判断文本框是否为空的两种方法
Jul 31 Javascript
js关闭当前页面(窗口)的几种方式总结
Mar 05 Javascript
jQuery的attr与prop使用介绍
Oct 10 Javascript
怎么选择Javascript框架(Javascript Framework)
Nov 22 Javascript
js获取select标签选中值的两种方式
Jan 09 Javascript
jQuery 仿百度输入标签插件附效果图
Jul 04 Javascript
Javascript中判断对象是否为空
Jun 10 Javascript
Node.js开发者必须了解的4个JS要点
Feb 21 Javascript
深入浅析Extjs中store分组功能的使用方法
Apr 20 Javascript
JavaScript中ES6 Babel正确安装过程
Jul 18 Javascript
JS实现隐藏同级元素后只显示JS文件内容的方法
Sep 04 Javascript
vue3获取当前路由地址
Feb 18 Vue.js
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
【COS正片】蕾姆睡衣cos,纯洁可爱被治愈了 cn名濑弥七
2020/03/02 日漫
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
2013/06/28 PHP
thinkphp配置连接数据库技巧
2014/12/02 PHP
joomla实现注册用户添加新字段的方法
2016/05/05 PHP
JQuery下关于$.Ready()的分析
2009/12/13 Javascript
Javascript学习笔记一 之 数据类型
2010/12/15 Javascript
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
2013/04/02 Javascript
jQuery操作元素css样式的三种方法
2014/06/04 Javascript
使用jQuery设置disabled属性与移除disabled属性
2014/08/21 Javascript
jQuery异步加载数据并添加事件示例
2014/08/24 Javascript
AngularJS下对数组的对比分析
2016/08/24 Javascript
关于JavaScript中事件绑定的方法总结
2016/10/26 Javascript
layer实现关闭弹出层刷新父界面功能详解
2017/11/15 Javascript
nodejs结合Socket.IO实现的即时通讯功能详解
2018/01/12 NodeJs
Javascript 编码约定(编码规范)
2018/03/11 Javascript
JavaScript类的继承方法小结【组合继承分析】
2018/07/11 Javascript
小程序指纹验证的实现代码
2018/12/04 Javascript
vue 解决移动端弹出键盘导致页面fixed布局错乱的问题
2019/11/06 Javascript
对vuex中store和$store的区别说明
2020/07/24 Javascript
简单的Python抓taobao图片爬虫
2014/10/26 Python
python自动格式化json文件的方法
2015/03/11 Python
Python实现一个转存纯真IP数据库的脚本分享
2017/05/21 Python
tensorflow 打印内存中的变量方法
2018/07/30 Python
python正则表达式去除两个特殊字符间的内容方法
2018/12/24 Python
python实现自动化上线脚本的示例
2019/07/01 Python
tensorflow对图像进行拼接的例子
2020/02/05 Python
HTML5 video 上传预览图片视频如何设置、预览视频某秒的海报帧
2018/08/28 HTML / CSS
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
社区敬老月活动实施方案
2014/02/17 职场文书
洗手间标语
2014/06/23 职场文书
党员自我剖析材料范文
2014/10/06 职场文书
神农溪导游词
2015/02/11 职场文书
小学体育队列队形教学反思
2016/02/16 职场文书
再次探讨go实现无限 buffer 的 channel方法
2021/06/13 Golang
「Manga Time Kirara MAX」2022年5月号封面公开
2022/03/21 日漫
vue 数字翻牌器动态加载数据
2022/04/20 Vue.js