JS进行图片预览,上次说的总体是两种方式(http://javacui.com/javascript/296.html ),一种是URL.createObjectURL(file),一种是FileReader()。
在进行Android客户端APP访问页面时,发现那种方式也不行。看错误,APP上根本不能使用createObjectURL,那就用FileReader吧,发现页面访问没问题,而APP访问时就是不行。
由于也不报错,我只能对比下e.target.result的结果了。在Google Chrome打印出来的结果来看,是以
data:image/jpeg;base64,
打头的Base64图片内容,但是弹出一下APP上的内容,发现是
data:base64,
不知道为什么少了字符,不过我还是马上使用替换,把内容回归为标准格式:
i.src = e.target.result.replace("data:base64","data:image/jpeg;base64");
于是,预览的方法写成:
function preview(file,imgPreviewId) { var reader = new FileReader(); reader.onload = function(e) { var img = e.target.result; img = img.replace("data:base64","data:image/jpeg;base64"); document.getElementById(imgPreviewId).src = img; } reader.readAsDataURL(file); }
在File对象的Change方法里面写:
function handleFileSelect (ePara) { var file = ePara.target.files[0]; preview(file,'picZhengMian'); }
使用JS监听增加change事件:
document.getElementById('photoImg').addEventListener('change', handleFileSelect, false);
也许你发现了,这并不是完美的解决方案。所以各位大佬们,你们懂得。
附上一个简介命令的HTML5上传预览测试页面:
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>html5 图片上传预览</title> <style> #preview { width: 300px; height: 300px; overflow: hidden; } #preview img { width: 100%; height: 100%; } </style> <script src="jquery-1.7.2.js"></script> <script type="text/javascript"> function preview1(file) { var img = new Image(), url = img.src = URL.createObjectURL(file) var $img = $(img) img.onload = function() { URL.revokeObjectURL(url) $('#preview').empty().append($img) } } function preview2(file) { var reader = new FileReader() reader.onload = function(e) { var $img = $('<img>').attr("src", e.target.result) $('#preview').empty().append($img) } reader.readAsDataURL(file) } $(function() { $('[type=file]').change(function(e) { var file = e.target.files[0] preview1(file) }) }) </script> </head> <body> <form enctype="multipart/form-data" action="" method="post"> <input type="file" name="imageUpload"/> <div id="preview" style="width: 300px;height:300px;border:1px solid gray;"></div> </form> </body> </html>
注意:需要JQuery文件。
推荐您阅读更多有关于“ android 图片预览 createObjectURL FileReader ”的文章
Java小强
未曾清贫难成人,不经打击老天真。
自古英雄出炼狱,从来富贵入凡尘。
发表评论: