1. 程式人生 > >上傳外掛webuploader.js的使用示例

上傳外掛webuploader.js的使用示例

注意:
一定要注意swf檔案的位置,因為如果swf引用路徑錯誤的話,瀏覽器不會報錯

測試swf必須放在外網,本地伺服器沒用

可以使用runtimeOrder: 'flash',配置項強制瀏覽器使用swf方式

fileNumLimit: 1,配合uploader.reset();可以實現限制單次上傳的數量,並且不影響下一次的上傳

自定義上傳按鈕的樣式,關鍵要修改.webuploader-pick{padding:xx;background:xx;}

<!DOCTYPE html>  
<html lang="en">  
<head>  
  <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">  
  <meta charset="UTF-8">  
  <title>demo</title>  
  <link rel="stylesheet" href="css/webuploader.css">
  <script src="../js/jquery-1.11.3.min.js"></script>  
  <script src="js/webuploader.min.js"></script>  
  
  <style>  
    * {margin: 0; padding: 0;}  
  </style>  
</head>  
<body>  
    <div id="uploader" class="wu-example">    
        <!--用來存放檔案資訊-->    
        <div id="thelist" class="uploader-list"></div>    
        <div class="btns">    
            <div class="picker">選擇檔案</div>    
            <button id="ctlBtn" class="btn btn-default">開始上傳</button>
        </div>    
    </div>    
    <div class="showCtn"></div>  
  <script>  
  $(function() {  
        //  登陸介面,請忽略
        $.ajax({
            url: '../../../../login/login',
            data: {
                un: '3e0317090ed27c1b3f5ea41709571c3dadafcce5c1f8c0ab594bee24bfe5a5e63255f9a67276ec52edebeefd274c7a282726c3570d18bc70996c267e81eba5abdc91247a02ed31288e1de41f54c81e140a2c641a7eeaecbf4e7831b8293dbe46fbbc14022c5443e03321bf8f54736d5cb0f68e1b39b6e1cac1fa98db237c4645',
                pwd: '41394da41aa797c871398dd23ecef0d6288b418eb5643e507316fe652701e1a14e274614dd56e31fac877fb26ba217d837860973850de1e80d0433bdbe466459bf81a2bd66212858f8e4fc33ea3cf256e1ac3e560b4709543302cf4fa8d2434f85e58b9fc9dafd1241b7d17f75014a8324f0e24536a75c28784dc90de81a4348'
            }
        })
  
        var uploader = WebUploader.create({    
            // swf檔案路徑,是相對於html而言    
            swf: 'js/Uploader.swf',    
            // 檔案接收介面    
            server: '../../../../material/jQueryFileUpload?type=1',    
            // 選擇檔案按鈕    
            pick: '.picker',  
            // runtimeOrder: 'flash',// 強制使用 flash 上傳  
            duplicate: true,// 同一個檔案可重複上傳  
        });    
                        
        // 加入上傳佇列之前   
        uploader.on('beforeFileQueued', function(file) {    
            if(!file.size) {  
                console.log('檔案大小為空');  
            }  
        });  
        // 加入上傳佇列    
        uploader.on('fileQueued', function(file) {    
            var str = '<div id="'+ file.id +'"><img src=""><p>'+ file.name +'</p><p class="state">等待上傳</p><div class="progress"><span class="progress-bar">進度條</span></div></div>';    
  
            $('.showCtn').append(str);    
  
            $img = $('#'+ file.id).find('img');    
  
            // 建立預覽圖    
            uploader.makeThumb(file, function(error, src) {    
                if (error) {    
                    $img.replaceWith('<span>此檔案無法預覽</span>');    
                    return;    
                }    
  
                $img.attr('src', src);    
            }, 200, 200);    
        });   

        var index = 0;
        // 上傳開始
        uploader.on('startUpload', function( file, percentage ) { 
            if(!index) {
                uploader.stop();
                index++;
                alert('再點1次即可上傳')
            }
        });
  
        // 點選上傳    
        $('#ctlBtn').on('click', function() {    
            uploader.option('formData', {//  後續新增一些引數(這個地方最好不要新增type引數,因為預設type是表示上傳檔案的型別,如果要新增,請在url後面拼接即可)
                a: 1,
                b: 2
            });
            uploader.upload();    
  
        });    
            
        // 顯示進度條    
        uploader.on('uploadProgress', function(file, percentage) {    
            var $li = $('#'+ file.id),    
                $percent = $li.find('.progress-bar');    
            
            $li.find('.state').text('正在上傳');    
  
            $percent.css('width', percentage*100 +'%');  
            $('body').append(percentage);  
        });    
            
        // 上傳成功    
        uploader.on('uploadSuccess', function(file, response) {    
            $('#'+file.id).find('.state').text('上傳成功');
            // uploader.reset();// 如果出現問題,一定要加上這一句    
        });    
            
        // 上傳失敗    
        uploader.on('uploadError', function(file, response) {    
            $('#'+file.id).find('.state').text('上傳出錯');    
        });    
            
        // 上傳結束    
        uploader.on('uploadComplete', function(file, response) {    
            $('#'+file.id).find('.state').text('上傳結束');  
        });  
  
        // 不是分片上傳時,uploadAccept相當於uploadSuccess
        // 獲取服務端返回的資料(每個分片會觸發一次)
        uploader.on('uploadAccept', function(object, data) {    
            console && console.log(data);
        });  

        // 上傳成功回撥(所有分片上傳成功後觸發,哪個分片最慢,它就會在這裡觸發)    
        uploader.on('uploadSuccess', function(file, data) { 
            console && console.log(data)
        })
  });  
  </script>  
</body>  
</html>

參考文章: