Plupload上传插件详解,多实例上传

我们来看一个比较全的  Plupload  Demo


  
  
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Plupload使用指南</title>
  6. <!-- 首先需要引入plupload的源代码 -->
  7. <script src="js/plupload.full.min.js"></script>
  8. </head>
  9. <body>
  10. <!-- 这里我们只使用最基本的html结构:一个选择文件的按钮,一个开始上传文件的按钮(甚至该按钮也可以不要) -->
  11. <p>
  12. <button id="browse">选择文件</button>
  13. <button id="start_upload">开始上传</button>
  14. </p>
  15. <script>
  16. //实例化一个plupload上传对象
  17. var uploader = new plupload.Uploader({
  18. browse_button : 'browse', //触发文件选择对话框的按钮,为那个元素id
  19. url : 'images/upload.shtml', //服务器端的上传页面地址
  20. flash_swf_url : 'js/Moxie.swf', //swf文件,当需要使用swf方式进行上传时需要配置该参数
  21. max_file_size: '2mb',//限制为2MB
    filters: [{title: "Image files",extensions: "jpg,gif,png"}]//图片限制
  22. silverlight_xap_url : 'js/Moxie.xap' //silverlight文件,当需要使用silverlight方式进行上传时需要配置该参数
  23. });
  24. //在实例对象上调用init()方法进行初始化
  25. uploader.init();
  26. //图片选择完毕触发
  27. uploader.bind('FilesAdded',function(uploader,files){
  28. });
  29. //图片上传成功触发,ps:data是返回值(第三个参数是返回值)
  30. uploader.bind('FileUploaded',function(uploader,files,data){
  31. });
  32. //会在文件上传过程中不断触发,可以用此事件来显示上传进度监听(比如说上传进度)
  33. uploader.bind('UploadProgress',function(uploader,file){
  34. });
  35. //还有N多呢.....,具体参考链接==>http://www.sojson.com/jc_plupload.html 的各种事件说明。
  36. //最后给"开始上传"按钮注册事件
  37. document.getElementById('start_upload').onclick = function(){
  38. uploader.start(); //调用实例对象的start()方法开始上传文件,当然你也可以在其他地方调用该方法
  39. }
  40. </script>
  41. </body>
  42. </html>

这个代码是从其他地方copy 过来,我做了些许改动。

这里要说清楚的是,要掌握  Plupload  上传,得掌握它的各种事件,事件详细参考请见http://www.sojson.com/jc_plupload.html 的各种事件说明。

着重讲到的是这个事件,成功后后台的返回值,以及  Plupload  的状态、head信息。在其他博客中很少有这个讲解。


  
  
  1. //图片上传成功触发,ps:data是返回值(第三个参数是返回值)
  2. uploader.bind('FileUploaded',function(uploader,files,data){
  3. /**
  4. uploader:当前实例的对象,
  5. files:被上传的文件
  6. data:返回值
  7. */
  8. });

参数没有额定的name ,只有位置。第三个参数是后台返回值。

好了,说到这里了,一般的使用没问题了,有问题参考请见http://www.sojson.com/jc_plupload.html 对Plupload的介绍。

Plupload多实例上传

我们经常有需求,一个页面有多个图片上传的地方。

需求1:比如餐厅添加员工,需要上传身份证,头像,健康证等等,那就有3个地方。而我们要对3 个图片上传一一对应上传,这时候是写3遍是肯定可以解决的。

需求2:前提和需求1一样,但是上传的触发方式有多种,比如点击图片位置可以上传,点击图片的“上传按钮”也可以触发,如下图。

点击身份证图片可以上传,点击“点击上传身份证正面”按钮也可以上传。

Plupload多实例上传方案一。

有的同学知道  Plupload  有一个设置,可以设置为数组。下面代码的browse_button 字段可以为数组,即为多个id 


  
  
  1. var uploader = new plupload.Uploader({
  2. //触发上传选择图片事件
  3. browse_button : ["cardzmbtn","cardbmbtn","cardzmbtn-img","cardbmbtn-img"],
  4. url : _upload ,//服务器端的上传页面地址
  5. max_file_size: '2mb',//限制为2MB
  6. filters: [{title: "Image files",extensions: "jpg,gif,png"}]//图片限制
  7. });

这里有一个缺陷就是,如果对对应的上传图片按钮处理不同的回调事件,可能就有点力不从心,我也console.log(uploader) 对象仔细看,没有触发上传的id 元素存储,要是有就解决了。

Plupload多实例上传方案二。

我目前就是选用的这种方案,原因是我要对不同的事件做不同的处理,比如上面上传身份证的案例,我需要上传正面和反面,上传成功够把上传的图片赋值到对应的位置。看下代码:

  Javascript  代码:


  
  
  1. //触发的id
  2. var ids = new Array("cardzmbtn","cardbmbtn","cardzmbtn-img","cardbmbtn-img");
  3. $.each(ids,function(i,n){
  4. var self = this.toString();
  5. //实例化一个plupload上传对象
  6. var uploader = new plupload.Uploader({
  7. browse_button : self, //触发文件选择对话框的按钮,为那个元素id
  8. url : _upload ,//服务器端的上传页面地址
  9. max_file_size: '2mb',//限制为2MB
  10. filters: [{title: "Image files",extensions: "jpg,gif,png"}]//图片限制
  11. });
  12. //在实例对象上调用init()方法进行初始化
  13. uploader.init();
  14. //绑定各种事件,并在事件监听函数中做你想做的事
  15. uploader.bind('FilesAdded',function(uploader,files){
  16. uploader.start();
  17. });
  18. uploader.bind('FileUploaded',function(uploader,files,data){
  19. var imgUrl = "http://cdn.sojson.com/";
  20. //这里得到图片的id
  21. var id = self.search("-img") == -1?self +"-img":self;
  22. console.log("现在在上传的身份证是:",self.search('cardzmbtn')==0?'正':'反',"面");
  23. //成功判断
  24. if(data.status == 200 ){
  25. data = $.parseJSON(data.response);
  26. var imagePath = imgUrl + data.file
  27. //图片赋值
  28. document.getElementById(id).src = imagePath;
  29. //正面
  30. if(self.search('cardzmbtn')===0){
  31. $("#cardzmbtn-input").val(imagePath).attr('src-data',data.file);
  32. }else{//反面
  33. $("#cardbmbtn-input").val(imagePath).attr('src-data',data.file);
  34. }
  35. }
  36. });
  37. });

  Html  代码:


  
  
  1. <!--身份证上传-->
  2. <div class="regCon mt15" id="step1" style="display: block">
  3. <div class="acctitle">身份证验证</div><br>
  4. 请上传有效期内的中华人民共和国二代身份证,<br>
  5. 请上传小于2M且可以清晰的看到身份证上面的汉字及数字的图片。
  6. <div class="sfzdiv mt15 clearfix">
  7. <div class="sfzbox fl">
  8. <!--<span class="sfz-m-t">正面</span>-->
  9. <div class="sfz-img">
  10. <!--身份证上传-->
  11. <!--身份证通过时-->
  12. <img src="pc_images/pcaccount/1.jpg" alt="" id="cardzmbtn-img" style="display: block;">
  13. <div class="cardzmbtn" id="cardzmbtn">点击上传身份证正面</div>
  14. <div class="sfz-zk" style="display: none">
  15. <p class="f_12">身份证正面已上传</p>
  16. <p class="f_10"><i class="sfz-right"></i>审核已通过</p>
  17. <p class="txt-c"><span class="a_upagin">重新上传</span></p>
  18. </div>
  19. </div>
  20. </div>
  21. <div class="sfzbox sfz-fm fr" >
  22. <!--<span class="sfz-m-t">背面</span>-->
  23. <div class="sfz-img">
  24. <!--身份证未通过时-->
  25. <img src="pc_images/pcaccount/2.jpg" alt="" id="cardbmbtn-img" style="display: block;">
  26. <div class="cardbmbtn" id="cardbmbtn">点击上传身份证背面</div>
  27. <div class="sfz-zk" style="display: none">
  28. <p class="f_12">身份证背面已上传</p>
  29. <p class="f_10"><i class="sfz-woring"></i>审核未通过</p>
  30. <p class="txt-c"><span class="a_upagin">重新上传</span></p>
  31. </div>
  32. </div>
  33. </div>
  34. <!-- 正面省份证 value:全地址,src-data:不带域名的地址-->
  35. <input type="hidden" id="cardzmbtn-input">
  36. <!-- 反面省份证 value:全地址,src-data:不带域名的地址 -->
  37. <input type="hidden" id="cardbmbtn-input">
  38. </div>
  39. <!--下边框-->
  40. <div class="botton-border mt50">
  41. <a href="javascript:void (0);" id="nextStep02" class="a_blue mt15">下一步</a>
  42. </div>
  43. <div class="layer" ></div>
  44. </div>

上传的时候选择的是正面身份证上传,结果会把上传的图片显示到正面的位置,并且把地址赋值到<input type="hidden" id="cardzmbtn-input">  的value 中。反面则一样显示在反面的位置,image路径赋值到<input type="hidden" id="cardbmbtn-input">  中。有没有上传正反面身份证业务判断就用它来判断即可。

版权所属:SO JSON在线解析

原文地址:http://www.sojson.com/blog/214.html

转载时必须以链接形式注明原始出处及本声明

Plupload上传插件中文帮助文档

http://www.sojson.com/jc_plupload.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值