浅谈js图片前端预览之filereader和window.url.createobjecturl
// preview img:fileReader方式document.getElementById( 'imgfile')。onchange = function(e){5 var ele = document.getelementbyid( 'imgfile')。ファイル[0]; var fr = new fileReader(); fr.onload = function(ele){var pvimg = new image(); pvimg.src = ele.target.result; pvimg.setattribute( 'id'、 'prepiewimg'); $('。preview_wrap ')。html(' ')。append(pvimg); 18} fr.readasdataurl(ele); } // preview img:url.createobjecturl 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'、 'prepiewimg'); $('。preview_wrap ')。html(' ')。append(pvimg); }以上先贴出用filereader和url.createobjecturl
按照前辈们的说法、creatobjecturl可以有更好的性能、或许是浏览器自带接口的原因、可以处理的更快。
最近做了一个需要上传图片预览的项目、用的最简单的入力ファイル上传、最开始想到的就是用fileereader实现前端预览、很简单、见前面的第一段代码、在自己手机上测试、没问题。但在某些奇葩手机上、没问题。但在某些奇葩手机上、比如oppo安卓4.3在我们アプリ
看了下代码、如下图、是因为、base64编码内缺少了图片格式、手动加上イメージ/jpg图片立即显示、刚开始以为是readasdataurl的问题、没有编码成功、找了一晚上原因、找了一晚上原因、无解!不知哪根筋搭错突然想到打印出入力ファイル的タイプ看看、タイプ为空、而ファイル的其他属性均正常。
继续百度(グーグル最近公司fq不稳定、没法用)、结果看到有人遇到类似奇怪问题、但是没有解决。
无意间却发现图片预览除了filereader
====================
第二天一早、把半夜的灵感实验了下、根据判断入力ファイル的图片类型、如果不存在就给文件手动赋值类型。(见下方调试用代码、有点乱)
结果发现ファイル的タイプ并不是你直接赋值就可以改变的、没有用!
于是开始实践url.createobjecturl(见最上面的第二部分代码)
神奇!发现预览正常!
查看代码发现、CreateObjecturl
以上这篇浅谈JS图片前端预览之filereader