基于asp.net + easyui框架,js实现上传图片之前判断图片格式,同时实现预览,兼容各种浏览器+下载

来源:互联网 发布:大学物理网络课程 编辑:程序博客网 时间:2024/06/06 00:47

        最近在做图片上传的一个前台页面,上传图片功能虽然很简单,但是需要我们学习的地方很多。在上传图片之前验证图片的格式,并同时实现预览。这篇博客我们就用一段简单的js代码来实现验证图片格式,并同时预览的功能。

html页面

<div>    选择图片:<input id="idFile" style="width:224px" runat="server" name="pic" onchange="javascript:setImagePreview(this,localImag,preview);" type="file" /></div>    预  览:<div id="localImag">    <%--预览,默认图片--%>    <img id="preview" alt="预览图片" onclick="over(preview,divImage,imgbig);" src="img/5691.jpg" style="width: 400px; height: 400px;"/> </div>

js代码

<script>    //检查图片的格式是否正确,同时实现预览    function setImagePreview(obj, localImagId, imgObjPreview) {        var array = new Array('gif', 'jpeg', 'png', 'jpg', 'bmp'); //可以上传的文件类型        if (obj.value == '') {            $.messager.alert("让选择要上传的图片!");            return false;        }        else {            var fileContentType = obj.value.match(/^(.*)(\.)(.{1,8})$/)[3]; //这个文件类型正则很有用             ////布尔型变量            var isExists = false;            //循环判断图片的格式是否正确            for (var i in array) {                if (fileContentType.toLowerCase() == array[i].toLowerCase()) {                    //图片格式正确之后,根据浏览器的不同设置图片的大小                    if (obj.files && obj.files[0]) {                        //火狐下,直接设img属性                         imgObjPreview.style.display = 'block';                        imgObjPreview.style.width = '400px';                        imgObjPreview.style.height = '400px';                        //火狐7以上版本不能用上面的getAsDataURL()方式获取,需要一下方式                         imgObjPreview.src = window.URL.createObjectURL(obj.files[0]);                    }                    else {                        //IE下,使用滤镜                         obj.select();                        var imgSrc = document.selection.createRange().text;                        //必须设置初始大小                         localImagId.style.width = "400px";                        localImagId.style.height = "400px";                        //图片异常的捕捉,防止用户修改后缀来伪造图片                         try {                            localImagId.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";                            localImagId.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc;                        }                        catch (e) {                            $.messager.alert("您上传的图片格式不正确,请重新选择!");                            return false;                        }                        imgObjPreview.style.display = 'none';                        document.selection.empty();                    }                    isExists = true;                    return true;                }            }            if (isExists == false) {                $.messager.alert("上传图片类型不正确!");                return false;            }            return false;        }    }        //显示图片          function over(imgid, obj, imgbig) {            //大图显示的最大尺寸  4比3的大小  400 300              maxwidth = 400;            maxheight = 300;            //显示              obj.style.display = "";            imgbig.src = imgid.src;            //1、宽和高都超过了,看谁超过的多,谁超的多就将谁设置为最大值,其余策略按照2、3              //2、如果宽超过了并且高没有超,设置宽为最大值              //3、如果宽没超过并且高超过了,设置高为最大值              if (img.width > maxwidth && img.height > maxheight) {                pare = (img.width - maxwidth) - (img.height - maxheight);                if (pare >= 0)                    img.width = maxwidth;                else                    img.height = maxheight;            }            else if (img.width > maxwidth && img.height <= maxheight) {                img.width = maxwidth;            }            else if (img.width <= maxwidth && img.height > maxheight) {                img.height = maxheight;            }        }</script>

界面效果

                                               

       源码下载

       http://download.csdn.net/detail/jiuqiyuliang/6889125


       js实现图片上传的功能很简单,尽管还不是很完美,相信不断的完善一定可以做的更好,希望大家提宝贵的建议。


====================================================================================

  注:这篇博文需要和下篇博文结合起来看,预览和上传才完整,否则浏览器可能会报相应错误。

====================================================================================


========================================================================================================================

基于asp.net+easyui框架的系列博文:

 

使用Jquery+EasyUI框架开发项目+下载+帮助--EasyUI的简介

Asp.net之真假分页大揭秘、使用AspNetPager实现真分页

Asp.net前端页面开发总结

Asp.net 一般处理程序+扩展

Asp.Net构架(Http请求处理流程)、Asp.Net 构架(Http Handler 介绍)、Asp.Net 构架(HttpModule 介绍)

基于asp.net + easyui框架,js实现上传图片之前判断图片格式,同时实现预览,兼容各种浏览器+下载

基于asp.net+ easyui框架,js提交图片,实现先上传图片再提交表单

基于asp.net + easyui框架,一步步学习easyui-datagrid——界面(一)

基于asp.net + easyui框架,一步步学习easyui-datagrid——实现分页和搜索(二)

基于asp.net + easyui框架,一步步学习easyui-datagrid——实现添加、编辑、删除(三)

基于asp.net + easyui框架,一步步学习easyui-datagrid——完成,总结(四)

 

=========================================================================================================================


5 0
原创粉丝点击