1. 程式人生 > >Webuploader教程(一)------簡單實用上傳功能

Webuploader教程(一)------簡單實用上傳功能

webuplader是百度的一個前端開源上傳外掛,支援加密、分片上傳。還是闊以的。 不過文件寫的實在是不敢恭維,挫到爆,gettting start介紹快速開始,寫的都是缺少東西的,直接複製下來是不可以執行的。 總結出一個經驗,測試html最好還是使用jsp,不然修改了頁面,瀏覽器上總是有快取,清快取是個很蛋疼的事情。 1. 引如外部資源 css,js檔案   這裡${ctxStatic}不要管,這個只是spring專案中使用el表示式來寫靜態檔案字首了。使用的話,測試的話直接寫死絕對路即可。
  1. <spanstyle="font-size:14px;"><linkhref="${ctxStatic }/bootstrap-3.3.5-dist/css/bootstrap.min.css"type="text/css"rel="stylesheet"/>
  2.  <linkhref="${ctxStatic }/webupload/css/webuploader.css"type="text/css"
    rel="stylesheet"/>
  3.  <scripttype="text/javascript"src="${ctxStatic }/jquery/jquery-1.9.1.min.js"></script>
  4.  <scripttype="text/javascript"src="${ctxStatic }/webupload/webuploader.min.js"></script>
  5.  <scripttype="text/javascript"src="${ctxStatic }/bootstrap-3.3.5-dist/js/bootstrap.min.js"
    ></script></span>


2.寫容器DOM
用來放置webuploader的dom
  1. <spanstyle="font-size:14px;"><divid="uploader-demo">
  2.     <!--用來存放item-->
  3.     <divid="thelist"class="uploader-list"></div>
  4.     <div>
  5.      <divid="filePicker">選擇圖片</div>
  6.      <buttonid="ctlBtn"
    class="btn btn-default">開始上傳</button>
  7.     </div>
  8. </div>
  9. </span>
3. 初始化webuploader元件,設定上傳等事件監聽。
[javascript] view plain copy
  1. <span style="font-size:14px;"><script type="text/javascript">  
  2.   $(function(){  
  3.    /*init webuploader*/
  4.    var $list=$("#thelist");   //這幾個初始化全域性的百度文件上沒說明,好蛋疼。
  5.    var $btn =$("#ctlBtn");   //開始上傳
  6.    var thumbnailWidth = 100;   //縮圖高度和寬度 (單位是畫素),當寬高度是0~1的時候,是按照百分比計算,具體可以看api文件
  7.    var thumbnailHeight = 100;  
  8.    var uploader = WebUploader.create({  
  9.        // 選完檔案後,是否自動上傳。
  10.        auto: false,  
  11.        // swf檔案路徑
  12.        swf: '${ctxStatic }/webupload/Uploader.swf',  
  13.        // 檔案接收服務端。
  14.        server: '/apm-web/a/test/',  
  15.        // 選擇檔案的按鈕。可選。
  16.        // 內部根據當前執行是建立,可能是input元素,也可能是flash.
  17.        pick: '#filePicker',  
  18.        // 只允許選擇圖片檔案。
  19.        accept: {  
  20.            title: 'Images',  
  21.            extensions: 'gif,jpg,jpeg,bmp,png',  
  22.            mimeTypes: 'image/*'
  23.        },  
  24.        method:'POST',  
  25.    });  
  26.    // 當有檔案新增進來的時候
  27.    uploader.on( 'fileQueued'function( file ) {  // webuploader事件.當選擇檔案後,檔案被載入到檔案佇列中,觸發該事件。等效於 uploader.onFileueued = function(file){...} ,類似js的事件定義。
  28.        var $li = $(  
  29.                '<div id="' + file.id + '" class="file-item thumbnail">' +  
  30.                    '<img>' +  
  31.                    '<div class="info">' + file.name + '</div>' +  
  32.                '</div>'
  33.                ),  
  34.            $img = $li.find('img');  
  35.        // $list為容器jQuery例項
  36.        $list.append( $li );  
  37.        // 建立縮圖
  38.        // 如果為非圖片檔案,可以不用呼叫此方法。
  39.        // thumbnailWidth x thumbnailHeight 為 100 x 100
  40.        uploader.makeThumb( file, function( error, src ) {   //webuploader方法
  41.            if ( error ) {  
  42.                $img.replaceWith('<span>不能預覽</span>');  
  43.                return;  
  44.            }  
  45.            $img.attr( 'src', src );  
  46.        }, thumbnailWidth, thumbnailHeight );  
  47.    });  
  48.    // 檔案上傳過程中建立進度條實時顯示。
  49.    uploader.on( 'uploadProgress'function( file, percentage ) {  
  50.        var $li = $( '#'+file.id ),  
  51.            $percent = $li.find('.progress span');  
  52.        // 避免重複建立
  53.        if ( !$percent.length ) {  
  54.            $percent = $('<p class="progress"><span></span></p>')  
  55.                    .appendTo( $li )  
  56.                    .find('span');  
  57.        }  
  58.        $percent.css( 'width', percentage * 100 + '%' );  
  59.    });  
  60.    // 檔案上傳成功,給item新增成功class, 用樣式標記上傳成功。
  61.    uploader.on( 'uploadSuccess'function( file ) {  
  62.        $( '#'+file.id ).addClass('upload-state-done');  
  63.    });  
  64.    // 檔案上傳失敗,顯示上傳出錯。
  65.    uploader.on( 'uploadError'function( file ) {  
  66.        var $li = $( '#'+file.id ),  
  67.            $error = $li.find('div.error');  
  68.        // 避免重複建立
  69.        if ( !$error.length ) {  
  70.            $error = $('<div class="error"></div>').appendTo( $li );  
  71.        }  
  72.        $error.text('上傳失敗');  
  73.    });  
  74.    // 完成上傳完了,成功或者失敗,先刪除進度條。
  75.    uploader.on( 'uploadComplete'function( file ) {  
  76.        $( '#'+file.id ).find('.progress').remove();  
  77.    });  
  78.       $btn.on( 'click'function() {  
  79.         console.log("上傳...");  
  80.         uploader.upload();  
  81.         console.log("上傳成功");  
  82.       });  
  83.   });  
  84.  </script></span>