• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Html5 FileReader实现即时上传图片功能实例代码
    下面的是在ie9下面实现的预览,跟ie8还是不一样的,不过我记得貌似ie8好像也是利用了fiter的功能,因为项目只要求在ie9以上,所以就没有写出ie8的啦

    复制代码
    代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Document</title>
    </head>
    <body>
    <p><style type="text/css">
    #kk{
    width:400px;
    height:400px;
    overflow: hidden;
    }
    #preview_wrapper{
    width:300px;
    height:300px;
    background-color:#CCC;
    overflow: hidden;
    }
    #preview_fake{ /* 该对象用于在IE下显示预览图片 */
    filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);
    width:300px;
    overflow: hidden;
    }
    #preview_size_fake{ /* 该对象只用来在IE下获得图片的原始尺寸,无其它用途 */
    filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image);
    width:300px;
    visibility:hidden;
    overflow: hidden;
    }
    #preview{ /* 该对象用于在FF下显示预览图片 */
    width:300px;
    height:300px;
    overflow: hidden;
    }
    </style><script type="text/javascript">
    function onUploadImgChange(sender){
    if( !sender.value.match( /.jpg|.gif|.png|.bmp/i ) ){
    alert('图片格式无效!');
    return false;
    }
    var objPreview = document.getElementById('preview');
    var objPreviewFake = document.getElementById('preview_fake');
    var objPreviewSizeFake = document.getElementById('preview_size_fake');
    if( sender.files && sender.files[0] ){ //这里面就是chrome和ff可以兼容的了
    objPreview.style.display = 'block';
    objPreview.style.width = 'auto';
    objPreview.style.height = 'auto';
    // Firefox 因安全性问题已无法直接通过 input[file].value 获取完整的文件路径
    objPreview.src = sender.files[0].getAsDataURL();
    }else if( objPreviewFake.filters ){
    // IE7,IE8 在设置本地图片地址为 img.src 时出现莫名其妙的后果
    //(相同环境有时能显示,有时不显示),因此只能用滤镜来解决
    // IE7, IE8因安全性问题已无法直接通过 input[file].value 获取完整的文件路径
    sender.select();
    sender.blur();
    var imgSrc = document.selection.createRange().text;
    objPreviewFake.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc;
    objPreviewSizeFake.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc;
    alert("已成功选择图片!");
    alert(objPreviewSizeFake.offsetWidth);
    autoSizePreview( objPreviewFake,objPreviewSizeFake.offsetWidth, objPreviewSizeFake.offsetHeight );
    objPreview.style.display = 'none';
    }
    }
    function onPreviewLoad(sender){
    autoSizePreview( sender, sender.offsetWidth, sender.offsetHeight );
    }
    function autoSizePreview( objPre, originalWidth, originalHeight ){
    var zoomParam = clacImgZoomParam( 300, 300, originalWidth, originalHeight );
    objPre.style.width = zoomParam.width + 'px';
    objPre.style.height = zoomParam.height + 'px';
    objPre.style.marginTop = zoomParam.top + 'px';
    objPre.style.marginLeft = zoomParam.left + 'px';
    }
    function clacImgZoomParam( maxWidth, maxHeight, width, height ){
    var param = { width:width, height:height, top:0, left:0 };
    if( width>maxWidth || height>maxHeight ){
    rateWidth = width / maxWidth;
    rateHeight = height / maxHeight;
    if( rateWidth > rateHeight ){
    param.width = maxWidth;
    param.height = height / rateWidth;
    }else{
    param.width = width / rateHeight;
    param.height = maxHeight;
    }
    }
    param.left = (maxWidth - param.width) / 2;
    param.top = (maxHeight - param.height) / 2;
    return param;
    }
    </script> <input name="localfile" type="file" id="localfile" size="28" onchange="onUploadImgChange(this)"/> <!--以下是预览图片用的-->
    <div id="kk">
    <div id="preview_wrapper">
    <div id="preview_fake">
    <img id="preview" src="" onload="onPreviewLoad(this)"/>
    </div>
    </div>
    <br/>
    <img id="preview_size_fake" />
    </div></p>
    </body>
    </html>
    上一篇:html5定位获取当前位置并在百度地图上显示
    下一篇:html5摇一摇代码优化包括DeviceMotionEvent等等
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    Html5 FileReader实现即时上传图片功能实例代码 Html5,FileReader,实现,即时,