JS图片上传预览 Android上的问题
  • 2023-04-27 14:08:37
  • 2768 热度
  • 0 评论

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文件。



alay

Flame

Hello world!

0 评论
留下评论