• JS实现的图片预览功能


    之前的博文有实现过图片上传预览,但那种方法是预览时就将图片上传,会产生很大的浪费空间。找到了之前有人写的用JS实现的图片预览,就说用js将上传的图片显示,上传代码在之前的博文中有写到。

    以下是实现的代码:

    大体上前台预览有两种,第一种是把图片在浏览器上做缓存,然后获取缓存地址;第二种是将图片转换为base64 字符串。


    一、将图片在浏览器上做缓存

    body:

    <table width="100%" border="0" cellspacing="0" cellpadding="0">
    			<tbody>
    				<tr>
    					<td height="101" align="center">
    						<div id="localImag"><img id="preview" src="http://blog.chuangling.net/Public/images/top.jpg" width="150" height="180" style="display: block;  150px; height: 180px;"></div>
    					</td>
    				</tr>
    				<tr>
    					<td align="center" style="padding-top:10px;"><input type="file" name="file" id="doc" style="150px;" onchange="javascript:setImagePreview();"></td>
    				</tr>
    			</tbody>
    		</table>
    

      

    js:

    function setImagePreview(avalue) {
    				var docObj = document.getElementById("doc");
    				var imgObjPreview = document.getElementById("preview");
    				if(docObj.files && docObj.files[0]) 
    				{ 
    					//火狐下,直接设img属性
    					imgObjPreview.style.display = 'block';
    					imgObjPreview.style.width = '150px';
    					imgObjPreview.style.height = '180px';
    					//imgObjPreview.src = docObj.files[0].getAsDataURL(); 
    					//火狐7以上版本不能用上面的getAsDataURL()方式获取,需要一下方式
    					imgObjPreview.src = window.URL.createObjectURL(docObj.files[0]);
    				} 
    				else 
    				{
    					//IE下,使用滤镜
    					docObj.select();
    					var imgSrc = document.selection.createRange().text;
    					var localImagId = document.getElementById("localImag"); //必须设置初始大小
    					localImagId.style.width = "150px";
    					localImagId.style.height = "180px"; //图片异常的捕捉,防止用户修改后缀来伪造图片
    					try {
    						localImagId.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";
    						localImagId.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc;
    					} catch(e) {
    						alert("您上传的图片格式不正确,请重新选择!");
    						return false;
    					}
    					imgObjPreview.style.display = 'none';
    					document.selection.empty();
    				}
    				return true;
    			}
    

      

    这样就实现了图片的预览。

    二、将图片转换为base64格式

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
    <form enctype="multipart/form-data" method="post" action="/file/upload">
        <input  onchange="previewImage(this, 'prvid')" type="file" name="file"/>
        <input type="submit" value="上传"/>
    </form>
    <div id="prvid">预览容器</div>
    </body>
    <script type="text/javascript">
        function previewImage(file, prvid) {
            /* file:file控件
             * prvid: 图片预览容器
             */
            var tip = "Expect jpg or png or gif!"; // 设定提示信息
            var filters = {
                "jpeg" : "/9j/4",
                "gif" : "R0lGOD",
                "png" : "iVBORw"
            }
            var prvbox = document.getElementById(prvid);
            prvbox.innerHTML = "";
            if (window.FileReader) { // html5方案
                for (var i = 0, f; f = file.files[i]; i++) {
                    var fr = new FileReader();
                    fr.onload = function(e) {
                        var src = e.target.result;
                        if (!validateImg(src)) {
                            alert(tip)
                        } else {
                            showPrvImg(src);
                        }
                    }
                    fr.readAsDataURL(f);
                }
            } else { // 降级处理
    
                if (!/.jpg$|.png$|.gif$/i.test(file.value)) {
                    alert(tip);
                } else {
                    showPrvImg(file.value);
                }
            }
    
            function validateImg(data) {
                var pos = data.indexOf(",") + 1;
                for ( var e in filters) {
                    if (data.indexOf(filters[e]) === pos) {
                        return e;
                    }
                }
                return null;
            }
    
            function showPrvImg(src) {
                var img = document.createElement("img");
                img.src = src;
                prvbox.appendChild(img);
            }
        }
    </script>
    </html>
    

      

  • 相关阅读:
    Eclipse中安装Tomcat
    Merge Query
    如何生成Java Key以及sign一个jar
    Create MSSQL Procedure
    MSSQL Procudure Sample
    MSSQL Get Last Monday and Last Sunday
    oracle Data blocks,Extents,Segments
    Oracle Index Clustering Factor(集群因子)
    mapreduce工作原理
    python 实现一个TwoSum的例子
  • 原文地址:https://www.cnblogs.com/cyrfr/p/6653495.html
Copyright © 2020-2023  润新知