天天看點

Plupload上傳插件詳解,多執行個體上傳 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上傳插件中文幫助文檔

點選身份證圖檔可以上傳,點選“點選上傳身份證正面”按鈕也可以上傳。

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