前端图片上传前预览

Posted 古兰精

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端图片上传前预览相关的知识,希望对你有一定的参考价值。

<!DOCTYPE html>
<html>
<head>
    <title>图片上传预览</title>
    <meta charset="utf-8">
    <script type="text/javascript" src="jquery-1.8.3.min.js"></script>
    <script type="text/javascript">
        $(function() {
        $("#file_upload").change(function() {
            var $file = $(this);
            var fileObj = $file[0];
            var windowURL = window.URL || window.webkitURL;
            var dataURL;
            var $img = $("#preview");
            if(fileObj && fileObj.files && fileObj.files[0]){
                dataURL = windowURL.createObjectURL(fileObj.files[0]);
                $img.attr(src,dataURL);
            }else{
                dataURL = $file.val();
                // $img.css("filter",‘progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod = scale,src="‘ + dataURL + ‘")‘);
                // 或var imgObj = document.getElementById("preview");
                // imgObj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src=\"" + dataURL + "\")";
                var imgObj = document.getElementById("preview");
                // 两个坑:
                // 1、在设置filter属性时,元素必须已经存在在DOM树中,动态创建的Node,也需要在设置属性前加入到DOM中,先设置属性在加入,无效;
                // 2、src属性需要像下面的方式添加,上面的两种方式添加,无效;
                imgObj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";
                imgObj.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = dataURL;
            }
        });
    });
    </script>
</head>
<body>
<div id="demo">
    <input id="file_upload" type="file" />
    <div class="image_container">
        <img id="preview" style="width: 300px;height: 300px;">
    </div>
</div>
</body>
</html>

 

<!DOCTYPE html>
<html>
<head>
    <title>图片上传预览</title>
    <meta charset="utf-8">
    <script type="text/javascript" src="jquery-1.8.3.min.js"></script>
    <script type="text/javascript">
    function checkType(upload){
        var image = document.getElementById(upload).value;
        var extStart = image.lastIndexOf(".");
        var ext = image.substring(extStart, image.length).toUpperCase();
        if ( ext != ".PNG" && ext != ".GIF" && ext != ".JPG" && ext != ".JPEG") {
            alert("图片限于png,gif,jpeg,jpg格式!");
            return false;
        }
        return true;
    }
    function setImagePreview(upload,preview) {
        if(checkType(upload)){ 
            var docObj=document.getElementById(upload);
            var imgObjPreview=document.getElementById(preview);
                imgObjPreview.style.display = block;
                imgObjPreview.style.width = 160px;
                imgObjPreview.style.height = 120px;
            if(docObj.files && docObj.files[0]){
                try{
                    imgObjPreview.src = docObj.files[0].getAsDataURL();
                }catch(e){
                    //火狐7以上版本不能用上面的getAsDataURL()方式获取,需要以下方式
                    imgObjPreview.src = window.URL.createObjectURL(docObj.files[0]);
                }
            }else{
                //IE下,使用滤镜
                docObj.select();
                var imgSrc = document.selection.createRange().text;
                //图片异常的捕捉,防止用户修改后缀来伪造图片
                try{
                    imgObjPreview.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";
                    imgObjPreview.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc;
                }catch(e){
                    alert("您上传的图片格式不正确,请重新选择!");
                    return false;
                }
                document.selection.empty();
            }
            return true;
        } 
    }
    </script>
</head>
<body>
<div id="demo">
    <input id="file_upload" type="file" onchange="setImagePreview(‘file_upload‘,‘preview‘)" />
    <div class="image_container">
        <img id="preview">
    </div>
</div>
</body>
</html>

 

以上是关于前端图片上传前预览的主要内容,如果未能解决你的问题,请参考以下文章

图片上传前预览,两种方式可实现

上传前多张图片预览

6.上传前图片预览

图片上传前预览的功能

转HTML5 jQuery图片上传前预览

想做一个PHP图片上传前预览,麻烦帮忙看下为啥预览不能显示