图片上传即时预览效果

做项目时一同事推荐的一个picload插件,实现图片上传后,即时预览效果,感觉很不错,分享出来。

点击上传图片后。立即看到预览的效果如下图:

布局代码:

<div class="banner" id="CoupicPicYes">图片预览</div>   <a class="input-file" href="javascript:void(0);" onclick="$(‘#photoUpload‘).click()" >
     + 上传图片<input type="file" name="file" id="photoUpload" />
    </a> 

这里用自定义的按钮代替了默认的图片上传按钮……(为了美观,美是一种追求~~~)

css:代码:

.input-file{position: relative;overflow: hidden;text-align: center; width: auto; color: green; background-color: #fff; }
.input-file input[type="file"]{ position: absolute; top: 0; right: 0; height: 40px; opacity: 0;}

我们只需要在页面上引入一下js代码即可,图片大小可以自由设置。

script引入代码:

<script>
    $("#photoUpload").uploadImgs({
    isMB:true,//图片大小限制是否为mb,默认是MB
    imgSize:‘2048‘,//图片限制大小,默认2M
    file:‘图片‘,//图片或者文件的提示信息
    imgClass:‘Img‘,//显示图片的img
    tipCallback:null,//错误提示回调函数,参数obj,bool<错误false或正确true提示>,value<提示信息>
    afterUpload:null//图片上传后的回调函数,参数src,obj
 });
</script>

最后附上picloade.js插件代码:

  1 /**
  2 * @js调用方法:
  3 * $(object).uploadImgs({
  4 *      isMB:true,//图片大小限制是否为mb,默认是MB
  5 *    imgSize:‘2048‘,//图片限制大小,默认2M
  6 *    file:‘图片‘,//图片或者文件的提示信息
  7 *    imgClass:‘Img‘,//显示图片的img
  8 *    tipCallback:null,//错误提示回调函数,参数obj,bool<错误false或正确true提示>,value<提示信息>
  9 *    afterUpload:null//图片上传后的回调函数,参数src,obj
 10 * });
 11 *
 12 */
 13 (function($) {
 14     var opt,ele;
 15     $.fn.uploadImgs=function(config){
 16         config = $.extend(require.defaults, config || {});
 17         opt=config;
 18         ele=this;
 19         return (new require())._init();
 20     };
 21     function require(options) {};
 22     require.prototype = {
 23         _init: function() {
 24             var id=$(ele).attr("id"),that=this,
 25                 x=document.getElementById(id);
 26             $(ele).unbind("change").bind("change",function(){//上传图片
 27                 that._getImg(x,$("#"+id));
 28             });
 29         },
 30         _getImg:function(x,obj){
 31             var pasts=opt.isMB ? opt.imgSize / 1024 +"M" : opt.imgSize+"kb",that=this;
 32             if(!x || !x.value) return;
 33             var user= obj.attr("accept")=="" || !obj.attr("accept") ? "jpg,jpeg,gif,bmp,png" : obj.attr("accept");
 34             eval(that._accept(user));
 35             if(patn.test(x.value)){//判断是否是图片
 36                 if (x.files && x.files[0])
 37                     {
 38                         var size=Math.ceil(x.files[0].size / 1024);//判断图片大小
 39
 40                         if(size > opt.imgSize)
 41                         {
 42                            var value=opt.file+"大小不能超过"+pasts;
 43                            opt.tipCallback && $.isFunction(opt.tipCallback) ? opt.tipCallback.call(that,obj,false,value) : that._tips(obj,false,value);
 44                            return;
 45                         }
 46                         var reader = new FileReader();
 47                         reader.readAsDataURL(x.files[0]);
 48                         reader.onload = function(evt){
 49                            $("."+opt.imgClass).attr("src",evt.target.result).attr("hasImg",true);
 50                            if(opt.afterUpload && $.isFunction(opt.afterUpload)){
 51                                opt.afterUpload.call(that,evt.target.result,obj);
 52                            }
 53                         }
 54                     }else{//ie
 55                        var img= new Image();
 56                        var _val=that._getPath(x);
 57                        img.src=x.value;
 58                        var size=Math.ceil(img.fileSize / 1024);
 59                     if(size>opt.imgSize)
 60                     {
 61                         var value=opt.file+"大小不能超过"+pasts;
 62                            opt.tipCallback && $.isFunction(opt.tipCallback) ? opt.tipCallback.call(that,obj,false,value) : that._tips(obj,false,value);
 63                         return;
 64                     }
 65                     _val = _val.replace(‘ ‘,‘%20‘);
 66                     var aa=$(‘<div class="adddivs" style="filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=scale,src=‘+_val+‘); WIDTH: ‘+opt.imgWidth+‘px; HEIGHT: ‘+opt.imgHeight+‘px;max-width:100%;max-height:100%"></div>‘);
 67                     if($("."+opt.imgClass).parent().find(".adddivs").length>0){
 68                         $("."+opt.imgClass).parent().find(".adddivs").remove();
 69                     }
 70                     $("."+opt.imgClass).after(aa);
 71                     $("."+opt.imgClass).hide();
 72                     if(opt.afterUpload && $.isFunction(opt.afterUpload)){
 73                            opt.afterUpload.call(that,evt.target.result,obj);
 74                        }
 75                     }
 76                 var value="上传成功";
 77                 opt.tipCallback && $.isFunction(opt.tipCallback) ? opt.tipCallback.call(that,obj,true,value) : that._tips(obj,true,value);
 78             }else{
 79                 var s="请上传"+user+"格式的"+opt.file;
 80                 opt.tipCallback && $.isFunction(opt.tipCallback) ? opt.tipCallback.call(that,obj,false,s) : that._tips(obj,false,s);
 81             }
 82         },
 83         _accept:function(user){
 84             var a="var patn = /\\.";
 85             for(var i=0;i<user.split(",").length;i++)
 86             {
 87                 if(i==user.split(",").length-1)
 88                 a += user.split(",")[i];
 89                 else
 90                 a += user.split(",")[i]+"|\\.";
 91             }
 92             a+="$/i;";
 93             return a;
 94         },
 95         _tips:function(obj,bool,value){
 96             var tip=obj.parent().next(".error_tips");
 97             tip.text(value);
 98             if(bool){tip.addClass("c-blue").removeClass("c-red");}
 99             else{tip.addClass("c-red").removeClass("c-blue");}
100         },
101         _getPath:function(obj){
102             if(obj)
103             {
104                 if (window.navigator.userAgent.indexOf("MSIE")>=1){
105                   obj.select();
106                   return document.selection.createRange().text;
107                 }else if(window.navigator.userAgent.indexOf("Firefox")>=1)
108                 {
109                   if(obj.files)  return obj.files.item(0).getAsDataURL();
110                   return obj.value;
111                 }
112                 return obj.value;
113             }
114         }
115     };
116     require.defaults = {
117         isMB:true,//图片大小限制是否为mb,默认是MB
118         imgSize:‘2048‘,//图片限制大小,默认2M
119         file:‘图片‘,//图片或者文件的提示信息
120         imgClass:‘Img‘,//显示图片的img
121         tipCallback:null,//错误提示回调函数,参数obj,bool<错误false或正确true提示>,value<提示信息>
122         afterUpload:null,//图片上传后的回调函数,参数src,obj
123         imgWidth:80,//用于IE8显示图片div的宽度
124         imgHeight:80//用于IE8显示图片div的高度
125     };
126 })(jQuery);
时间: 2024-10-13 19:14:47

图片上传即时预览效果的相关文章

JS兼容各个浏览器的本地图片上传即时预览效果

很早以前 在杭州银行工作曾经碰到这么一个需求,当时也是纠结了很久,也是google了很久,没有碰到合适的demo,今天特意研究了下这方面的的问题,所以也就做了个简单的demo来实现 本地上传图片即时预览效果.其在标准浏览器(firefox,chrome,IE10等其他浏览器)用了HTML5中的内容实现图片即时预览效果.在IE10以下浏览器用了滤镜来解决图片显示问题.在看代码之前,先让我们来了解以下知识点: HTML5中的FileReader对象: FileReader对象主要是把文件读入内存中,

jQuery:[1]实现图片上传并预览

jQuery:[1]实现图片上传并预览 原理 预览思路 1.当上传对象的input被触发并选择本地图片之后获取要上传的图片对象的URL: 2.把对象URL赋值给实现写好的img标签的src属性 File对象 File对象可以用来获取文件的信息,还可以用来读取这个文件的内容,通常情况下,File对象是来自用户在一个input元素上选择文件后返回的FileList对象,也可以是来自由拖放操作生成的DataTransfer对象. Blob对象 Blob对象是一个包含由只读原始数据的类文件对象,Blob

html之file标签 --- 图片上传前预览 -- FileReader

记得以前做网站时,曾经需要实现一个图片上传到服务器前,先预览的功能.当时用html的<input type="file"/>标签一直实现不了,最后舍弃了这个标签,使用了其他方式来实现了这个功能. 今天无意发现了一个知识点,用html的file标签就能实现图片上传前预览,感觉很棒,记录一下!就是通过file标签和js的FileReader接口,把选择的图片文件调用readAsDataURL方法,把图片数据转成base64字符串形式显示在页面上. 1.闲话少说,测试一下,图片上

[转]html之file标签 --- 图片上传前预览 -- FileReader

记得以前做网站时,曾经需要实现一个图片上传到服务器前,先预览的功能.当时用html的<input type="file"/>标签一直实现不了,最后舍弃了这个标签,使用了其他方式来实现了这个功能. 今天无意发现了一个知识点,用html的file标签就能实现图片上传前预览,感觉很棒,记录一下!就是通过file标签和js的FileReader接口,把选择的图片文件调用readAsDataURL方法,把图片数据转成base64字符串形式显示在页面上. 1.闲话少说,测试一下,图片上

图片上传时预览插件

html代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script src="uploadView.js" type="text/javascript"></script> <script> window.

js实现图片上传及预览----------------------&gt;&gt;兼容ie6-8 火狐以及谷歌

<head runat="server"> <title>图片上传及预览(兼容ie6/7/8 firefox/chrome)</title> <script src="../Scripts/jquery-1.4.2.min.js" type="text/javascript"></script> </head> <body> <form id="f

js实现图片上传本地预览

<!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

JQuery插件:图片上传本地预览插件,改进案例一则。

/* *名称:图片上传本地预览插件 v1.1 *作者:周祥 *时间:2013年11月26日 *介绍:基于JQUERY扩展,图片上传预览插件 目前兼容浏览器(IE 谷歌 火狐) 不支持safari *插件网站:http://keleyi.com/keleyi/phtml/image/16.htm *参数说明: Img:图片ID;Width:预览宽度;Height:预览高度;ImgType:支持文件类型;Callback:选择文件显示图片后回调方法; *使用方法: <div> <img id

js 图片上传本地预览

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>图片上传本地预览</title> <style type="text/css"> #preview{width:260px;height:190px;border:1px solid #000;overflow:hidden;