博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS 实现 文件上传预览
阅读量:5913 次
发布时间:2019-06-19

本文共 2595 字,大约阅读时间需要 8 分钟。

hot3.png

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

    <head>

        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

        <title>图片上传本地预览</title>

        <style type="text/css">

            #preview {

                width: 260px;

                height: 190px;

                border: 1px solid #000;

                overflow: hidden;

            }

            #imghead {

                filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image);

            }

        </style>

        <script type="text/javascript">

            //图片上传预览    IE是用了滤镜。

            function previewImage(file) {

                var MAXWIDTH = 260;

                var MAXHEIGHT = 180;

                var div = document.getElementById('preview');

                if (file.files && file.files[0]) {

                    div.innerHTML = '<img id=imghead>';

                    var img = document.getElementById('imghead');

                    img.onload = function() {

                        var rect = clacImgZoomParam(MAXWIDTH, MAXHEIGHT, img.offsetWidth, img.offsetHeight);

                        img.width = rect.width;

                        img.height = rect.height;

                        //                 img.style.marginLeft = rect.left+'px';

                        img.style.marginTop = rect.top + 'px';

                    }

                    var reader = new FileReader();

                    reader.onload = function(evt) {

                        img.src = evt.target.result;

                    }

                    reader.readAsDataURL(file.files[0]);

                } else//兼容IE

                {

                    var sFilter = 'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src="';

                    file.select();

                    var src = document.selection.createRange().text;

                    div.innerHTML = '<img id=imghead>';

                    var img = document.getElementById('imghead');

                    img.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = src;

                    var rect = clacImgZoomParam(MAXWIDTH, MAXHEIGHT, img.offsetWidth, img.offsetHeight);

                    status = ('rect:' + rect.top + ',' + rect.left + ',' + rect.width + ',' + rect.height);

                    div.innerHTML = "<div id=divhead style='width:" + rect.width + "px;height:" + rect.height + "px;margin-top:" + rect.top + "px;" + sFilter + src + "\"'></div>";

                }

            }

            function clacImgZoomParam(maxWidth, maxHeight, width, height) {

                var param = {

                    top : 0,

                    left : 0,

                    width : width,

                    height : height

                };

                if (width > maxWidth || height > maxHeight) {

                    rateWidth = width / maxWidth;

                    rateHeight = height / maxHeight;

                    if (rateWidth > rateHeight) {

                        param.width = maxWidth;

                        param.height = Math.round(height / rateWidth);

                    } else {

                        param.width = Math.round(width / rateHeight);

                        param.height = maxHeight;

                    }

                }

                param.left = Math.round((maxWidth - param.width) / 2);

                param.top = Math.round((maxHeight - param.height) / 2);

                return param;

            }

        </script>

    </head>

    <body>

        <div id="preview">

            <img id="imghead" width=100 height=100 border=0 src='img/ff.jpg'>

        </div>

        <input type="file" οnchange="previewImage(this)" />

    </body>

</html>

转载于:https://my.oschina.net/u/615191/blog/318448

你可能感兴趣的文章
195. Spring Boot 2.0数据库迁移:Flyway
查看>>
集成支付宝SDK时错误的解决办法
查看>>
C++ ssd5 12 optional exercise2
查看>>
如何调用带返回值类型的函数
查看>>
数据库设计,表与表的关系,一对一。One-To-One(1)
查看>>
Building QT projects from the command line
查看>>
微信小程序直播,腾讯云直播+微信小程序实现实时直播
查看>>
JSP
查看>>
新工作
查看>>
linux网络编程涉及的函数
查看>>
数据表的相关操作
查看>>
PHP 全局变量
查看>>
String和StringBuilder、StringBuffer的区别?
查看>>
Debian/Kali下Subversion的配置
查看>>
c#选择文件并读取EXECL
查看>>
网络编程
查看>>
【转】Python资源 转自 dylanninin.com
查看>>
SQL Server 约束表字段不能有重复值
查看>>
B/S网络概述
查看>>
HDU1235 统计同成绩学生人数【序列处理】
查看>>