最近项目需求:1、多图压缩上传(最多8张);2、图片异步上传;3、图片上传成功后预览;4、图片设置主图同时可删除。
根据这个想到了用plupload.js来实现此功能,这是基于jq的一款插件,详情见官网http://www.plupload.com
开文档介绍开始撸改代码了,最终跑起来的效果图如下:


以上图片上传基本实现了项目需求,但项目上线跑起来时,各种问题不期而遇。市面上有部分型号手机并不支持此插件上传。。为此特地去查看下他相关的资料:
Plupload会自动侦测当前的环境,选择最合适的上传方式,并且会优先使用HTML5的方式。所以你完全不用去操心当前的浏览器支持哪些上传方式,Plupload会自动为你选择最合适的方式。 因为本网站是基于微信端运行,目前得到用户的反馈为:ipone7、红米Note3、小米Note4x、oppo R9s plus、vivo Xplay5、金立m6P不能调取手机相册功能,直接唤起相机(后去掉capture="camera"属性后,iPhone6,iPhone6 plus正常)或调取后不能选择图片! 关于这个问题,目前本人太菜鸟,在此基础上尚未得到好的解决办法。 问题是这个图片上传是用户入住网站的大问题所在,于是请教大神和同事朋友后,最后解决办法是换掉此插件!(其实这款插件针对大部分机型还是蛮友好的,移动端不友好但PC端却很nice)。 最后用imageUploader.js完美解决以上问题 跑起来效果图如下 :


基本实现了项目需求,图片压缩base64串异步上传,canvas预览,点击设为主图删除等功能都正常,终于算是松一口气了。 附上部分代码,后续会陆续补上:
头部引入两个主要js文件
<script type="text/javascript" src="/img/js/wrapper.js"></script>
<script type="text/javascript" src="/img/js/upload_image.js"></script>
上传配置
// 上传商品图片
var i = function(){
return ("img.preview").length;
}
//上传地址
var uploaderUrl = 'http://1yw.com/views/product/base64.php';
console.log(uploaderUrl);
new ImageUploader((".upload-area"),{
uploaderUrl:uploaderUrl,
//inputName:"consultFormDto.imgs",
beforeComplete:function(){
('#btn-send').attr('disabled',true);
},
afterComplete: function() {('#btn-send').attr('disabled',false);
if(i() > 0){
(".J_Showmeonfileuploaded").hide()
}
if(8 === i()){(".upload-btn").hide();
}
}
});
以上就是对用户移动端商品图片上传的解决了,写得比较急,马马虎虎,有时间会好好整理一下,包括代码总结,本人菜鸟一只,欢迎大神们多提意见。
