浅谈js图片前端预览之filereader和window.URL.createObjectURL


Posted in Javascript onJune 30, 2016

浅谈js图片前端预览之filereader和window.URL.createObjectURL

//preview img : filereader方式
  document.getElementById('imgFile').onchange = function(e){ 5     var ele = document.getElementById('imgFile').files[0];

    var fr = new FileReader();
    fr.onload = function(ele){

      var pvImg = new Image();
      pvImg.src = ele.target.result;
      pvImg.setAttribute('id','previewImg');

      $('.preview_wrap').html('').append(pvImg);18     }
    fr.readAsDataURL(ele);
  }
//preview img : URL.createObjectURL 方式
  document.getElementById('imgFile').onchange = function(e){
    var ele = document.getElementById('imgFile').files[0];

    var createObjectURL = function(blob){
     return window[window.webkitURL ? 'webkitURL' : 'URL']['createObjectURL'](blob);
    };
    var newimgdata = createObjectURL(ele);

    var pvImg = new Image();
    pvImg.src = newimgdata;
    pvImg.setAttribute('id','previewImg');

    $('.preview_wrap').html('').append(pvImg);
  }

以上先贴出用filereader 和 URL.createObjectURL 两种预览方式。

按照前辈们的说法,creatObjectURL可以有更好的性能,或许是浏览器自带接口的原因, 可以处理的更快。

最近做了一个需要上传图片预览的项目,用的最简单的input file上传,最开始想到的就是用filereader实现前端预览,很简单,见前面的第一段代码,在自己手机上测试,没问题。但在某些奇葩手机上,比如oppo 安卓4.3在我们app的webview内通过打开相册上传发现无法预览图片!但在该手机的微信,浏览器内上传均可以!

看了下代码,如下图,是因为base64编码内缺少了图片格式,手动加上image/jpg图片立即显示,刚开始以为是readAsDataURL的问题,没有编码成功,找了一晚上原因,无解!不知哪根筋搭错突然想到打印出input file的type看看,发现type为空,而file的其他属性均正常。

浅谈js图片前端预览之filereader和window.URL.createObjectURL

继续百度(google最近公司FQ不稳定,没法用),结果看到有人遇到类似奇怪问题,但是没有解决。

无意间却发现图片预览除了filereader还可以用url.createObjectURL。晚上11点26,先赶最后一班地铁。

=====================

第二天一早,把半夜的灵感实验了下,根据判断input file的图片类型,如果不存在就给文件手动赋值类型。(见下方调试用代码,有点乱)

浅谈js图片前端预览之filereader和window.URL.createObjectURL

结果发现file的type并不是你直接赋值就可以改变的,没有用!

于是开始实践URL.createObjectURL (见最上面的第二部分代码)

神奇!发现预览正常!

查看代码发现,createObjectURL得到的是一个http格式的文件,即使input file的文件类型不存在也不会编码失败。

浅谈js图片前端预览之filereader和window.URL.createObjectURL

以上这篇浅谈js图片前端预览之filereader和window.URL.createObjectURL就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
Mar 10 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
Jan 13 Javascript
jQuery内容过滤选择器用法分析
Feb 10 Javascript
javascript中select下拉框的用法总结
Jan 07 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
May 20 Javascript
js实现数组去重方法及效率?Ρ? target=
Feb 14 Javascript
jquery实现自适应banner焦点图
Feb 16 Javascript
基于JavaScript实现的快速排序算法分析
Apr 14 Javascript
微信小程序 ES6Promise.all批量上传文件实现代码
Apr 14 Javascript
js核心基础之闭包的应用实例分析
May 11 Javascript
150行Node.js实现的dns代理工具
Aug 02 Javascript
JavaScript onclick事件使用方法详解
May 15 Javascript
浅谈JS中json数据的处理
Jun 30 #Javascript
原生js实现自由拖拽弹窗代码demo
Jun 29 #Javascript
JS中Json数据的处理和解析JSON数据的方法详解
Jun 29 #Javascript
简单实现js间歇或无缝滚动效果
Jun 29 #Javascript
js精准的倒计时函数分享
Jun 29 #Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
Jun 29 #Javascript
RequireJS多页面应用实例分析
Jun 29 #Javascript
You might like
php中神奇的fastcgi_finish_request
2011/05/02 PHP
php分页函数示例代码分享
2014/02/24 PHP
ThinkPHP让分页保持搜索状态的方法
2014/07/02 PHP
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
php生成动态验证码gif图片
2015/10/19 PHP
详谈PHP面向对象中常用的关键字和魔术方法
2017/02/04 PHP
CSS鼠标响应事件经过、移动、点击示例介绍
2013/09/04 Javascript
javacript使用break内层跳出外层循环分析
2015/01/12 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
2016/02/25 Javascript
原生js实现addClass,removeClass,hasClass方法
2016/04/27 Javascript
jQuery EasyUI常用数据验证汇总
2016/09/18 Javascript
JS中this上下文对象使用方式
2016/10/09 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
2017/03/02 Javascript
JavaScript 隐性类型转换步骤浅析
2018/03/15 Javascript
使用layui 渲染table数据表格的实例代码
2018/08/19 Javascript
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
[37:37]DAC2018 4.4 淘汰赛 Optic vs Mineski 第二场
2018/04/05 DOTA
Python 使用os.remove删除文件夹时报错的解决方法
2017/01/13 Python
Python中使用haystack实现django全文检索搜索引擎功能
2017/08/26 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
Python解析Excle文件中的数据方法
2018/10/23 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
2018/12/07 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
Python2和Python3的共存和切换使用
2019/04/12 Python
500行Python代码打造刷脸考勤系统
2019/06/03 Python
Python用摘要算法生成token及检验token的示例代码
2020/12/01 Python
navabi英国:设计师大码女装
2019/06/25 全球购物
内容编辑个人求职信
2013/12/10 职场文书
建筑结构施工专业推荐信
2014/02/21 职场文书
电子商务系毕业生自荐信
2014/05/29 职场文书
购房意向书
2014/08/30 职场文书
民警群众路线教育实践活动对照检查材料
2014/10/04 职场文书
小学生节水倡议书
2015/04/29 职场文书
2019年干货:自我鉴定
2019/03/25 职场文书
检讨书格式
2019/04/25 职场文书