• js前台实现上传图片的预览


    网上这样的插件一大堆,不过还是谈下js下代码的实现,加深这方面的理解。

    当然也没有一种方式就可以完事的情形,主要就两种方面来处理;

    1、file API的filereader接口完成(支持的浏览器:Internet Explorer: 10+ Firefox: 10+ Chrome: 13+ Opera: 12+ Safari: partial)

    function show(obj_input){
    
    var files = this.files;
    var file = files[0];
    
    var reader = new FileReader(), htmlImage;
    
    reader.onload = function(e) {
    
    htmlImage = '<img src="'+ e.target.result +'" id="image"/>'; // 这里e.target.result就是base64编码
    
    document.innerHTML=htmlImage;
    
    var img=document.getElementById('image');
    
    img.onload=function(){
             img.style.width=220+"px";
        img.style.height=120+"px";
    }
    
    }
    
    reader.readAsDataURL(file);//以DataURL格式读取文件内容
    } 

    这个方面网址(https://segmentfault.com/a/1190000002786372)上面的介绍得比较详细,可以参考一下。

    2、ie低版本用ie滤镜完成

     1 function show(obj_input){
     2 
     3 //obj_input文件上传控件对象,obj_img图像对象,preview_div预览图装载div对象
     4 
     5 obj_input.select();
     6 
     7 obj_input.blur();//让上传控件失去焦点,以免ie的安全机制拒绝document.selection.createRange().text的访问
     8 //还有一种情况是,如果当前页面被嵌在框架中,则fileImg.blur()之后,file控件中原本被选中的文本将会失去选中的状态,因此,不能使用fileImg.blur()。
    可以让当前页面上的其他元素,如div,button等获得焦点即可,如div_view.focus(),或者直接用window.parent.docuemnt.body.focus(). 9 var src = document.selection.createRange().text; 10 11 var div_sFilter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src='" + src + "')"; 12 var img_sFilter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='image',src='" + src + "')"; 13 14 document.selection.empty(); 15 16 obj_img.style.filter = img_sFilter; 17 18 obj_img.style.display = "none"; 19 20 obj_img.style.width = "100%"; 21 22 obj_img.style.height = "100%"; 23 24 preview_div.style.width = 220 + 'px'; 25 26 preview_div.style.height = 120 + 'px'; 27 28 preview_div.style.filter = div_sFilter; 29 }

    ie6、7、8都可以用滤镜的方式完成预览。

  • 相关阅读:
    How to solve problems
    【Python】区分List 和String
    【Python】内置方法pop
    【Python】安装配置Anaconda
    【Web crawler】print_all_links
    【Python】多重赋值之值互换
    BNF巴科斯-诺尔范式
    Svn与Git的区别
    python项目部署
    linux每日命令(3):which命令
  • 原文地址:https://www.cnblogs.com/chendc/p/5391033.html
Copyright © 2020-2023  润新知