Fork me on GitHub

IE8/9 本地预览上传图片

本地预览的意思是,在选择图片之后先不上传到服务器,而是由一个<img>标签来预览本地的图片,非 IE8/9 浏览器可以从<input type=“file”/>中获取到图片流,然后设置到<img src=“”>进行显示,但 IE8/9 浏览器只能获取到本地图片的绝对路径,并且设置 src 是无效的。

解决上面问题的方式是采用 css 图片滤镜,示例代码:

<!-- 要设置图片预览区域的大小 -->
<p class="img-wrap">
    <img name="prevPic" id="prevPic" src="" />
    <input name="uploadImage" id="uploadImage" type="file" />
</p>

<script type="text/javascript">
	$('#uploadImage').change(function (e) {
        if (navigator.userAgent.indexOf('MSIE 8') >= 0 || navigator.userAgent.indexOf('MSIE 9') >= 0) {
            $(this).select();
            window.parent.document.body.focus();
            var realpath = document.selection.createRange().text;
            $(this).parent().css("filter", "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true',src=\"" + realpath + "\",sizingMethod=scale)");
        }
        else {
            var file = e.delegateTarget.files[0];
            var reader = new FileReader();
            var targetId = e.target.id;
            reader.readAsDataURL(file);
            reader.onload = function () {
                var picString = reader.result;
                $("#prevPic").attr({ "src": picString }).show();
            };
        }
    });
</script>

获取realpath是为了解决发布 IIS 之后,出现本地图片路径变成C:\fakepath\xxxx.jpg的问题。

posted @   田园里的蟋蟀  阅读(624)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2013-10-18 T-Sql(七)用户权限操作(grant)
点击右上角即可分享
微信分享提示