日期:2014-05-16  浏览次数:20386 次

JS图片上传浏览
小弟使用IE滤镜写了一个图片上传预览的js,但是后出现了图片上有破图标志。请问可能是和原因?附上代码
JScript code
function setImagePreview(){
                    var docObj=document.getElementById("filename");
                    if(docObj.files && docObj.files[0]){
                        //火狐下,直接设img属性
                        jQuery("img").attr("style","display:block");
                        jQuery("#cropbox").attr("width","240");
                        jQuery("#cropbox").attr("height","180");                   
                        //火狐7以上版本不能用上面的getAsDataURL()方式获取,需要一下方式  
                        jQuery("img").attr("src",window.URL.createObjectURL(docObj.files[0]));
                        jQuery("#p").val(imgSrc);
                     }else{
                         //IE下,使用滤镜
                        docObj.select();
                        var imgSrc = document.selection.createRange().text;
                        var localImagId = document.getElementById("cropbox");
                        var localImag120 = document.getElementById("img100");
                        //必须设置初始大小
                        localImagId.style.display = "block";
                        localImag120.style.display = "block";
                        localImagId.style.width = "240px";
                        localImagId.style.height = "180px";
                        //图片异常的捕捉,防止用户修改后缀来伪造图片
                        try{
                               localImagId.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";
                               localImagId.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc;
                               localImag120.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";
                               localImag120.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc;
                               jQuery("#p").val(imgSrc);
                            }catch(e){
                               alert("您上传的图片格式不正确,请重新选择!");
                               return false;
                           }
                        //alert(imgSrc);
                        //jQuery("img").attr("style","display:block");
                        //jQuery("#cropbox").attr("width","240");
                        //jQuery("#cropbox").attr("height","180");
                        //jQuery("img").attr("src",imgSrc);
                        //jQuery("#p").val(imgSrc);
                        document.selection.empty();
                    }
                }
这个JS是在liferay的wbox弹出框中使用的。

------解决方案--------------------
使用的浏览器是IE8吗?在IE8上,如果不修改客户端,是无法实现你的这个功能的。这也就是为什么各大网站已经不用client图像回显的原因。而改用服务器端回显。