1、使用插件plupload
2、实现效果
3、HTML
1 <li> 2 <div class="default" data-disabled="false"><img src="" class="upImage"></div> 3 <input id="fileStorge2" value="" type="hidden" class="fileStorge"> 4 <input type="file" name="" value="" style="display: none;" class="fileUp" id="fileUp2" data-id="2"> 5 </li>
4、JS
//点击上传图片 $(\'body\').off(\'click\',\'.default\'); $(\'body\').on(\'click\',\'.default\', function () { var disabled = $(this).attr(\'data-disabled\'); if (disabled === "true") { return false; }else{ $(this).siblings(\'.fileUp\').trigger(\'click\'); } }); //图片上传初始化函数 function initImage(){ $(\'.fileUp\').each(function(index,ele){ var id = $(this).attr(\'id\'), indexNum = $(this).attr(\'data-id\'); initUpload(id, indexNum); }); } //图片上传 function initUpload(eleID, index) { var uploader = new plupload.Uploader({ //实例化一个plupload上传对象 browse_button : document.getElementById(eleID), url : \'upload.html\', //服务器端的上传页面地址 flash_swf_url : \'Moxie.swf\', silverlight_xap_url : \'Moxie.xap\', multi_selection: false,//是否可以在文件浏览对话框中选择多个文件 filters: { mime_types : [ //只允许上传图片文件 { title : "图片文件", extensions : "jpg,gif,png" } ] } }); uploader.init(); //初始化 //绑定文件添加进队列事件 uploader.bind(\'FilesAdded\',function(uploader,files){ for(var i = 0, len = files.length; i<len; i++){ !function(i){ previewImage(files[i],function(imgsrc){ $(\'#\'+eleID+\'\').siblings(\'.default\').find(\'img\').attr(\'src\',imgsrc).show(); $(\'#fileStorge\'+index).val(encodeURIComponent(imgsrc)); }); }(i); } }); } //图片上传预览 function previewImage(file,callback){ if(file.type==\'image/gif\'){ //gif使用FileReader进行预览,因为mOxie.Image只支持jpg和png var fr = new mOxie.FileReader(); fr.onload = function(){ callback(fr.result); } fr.readAsDataURL(file.getSource()); }else{ var preloader = new mOxie.Image(); preloader.onload = function() { preloader.downsize( 300, 300 );//先压缩一下要预览的图片,宽300,高300 var imgsrc = preloader.type==\'image/jpeg\' ? preloader.getAsDataURL(\'image/jpeg\',80) : preloader.getAsDataURL(); //得到图片src,实质为一个base64编码的数据 callback && callback(imgsrc); //callback传入的参数为预览图片的url }; preloader.load( file.getSource() ); } }