移动端用户图片异步上传问题

发布于2017年6月10日 00:38:07

最近项目需求: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();
 }
 }
 });

以上就是对用户移动端商品图片上传的解决了,写得比较急,马马虎虎,有时间会好好整理一下,包括代码总结,本人菜鸟一只,欢迎大神们多提意见。

发表评论