Webuploader教程(一)------簡單實用上傳功能
阿新 • • 發佈:2018-12-31
webuplader是百度的一個前端開源上傳外掛,支援加密、分片上傳。還是闊以的。
不過文件寫的實在是不敢恭維,挫到爆,gettting start介紹快速開始,寫的都是缺少東西的,直接複製下來是不可以執行的。
總結出一個經驗,測試html最好還是使用jsp,不然修改了頁面,瀏覽器上總是有快取,清快取是個很蛋疼的事情。
1. 引如外部資源 css,js檔案
這裡${ctxStatic}不要管,這個只是spring專案中使用el表示式來寫靜態檔案字首了。使用的話,測試的話直接寫死絕對路即可。
2.寫容器DOM
用來放置webuploader的dom
[javascript] view plain copy
- <spanstyle="font-size:14px;"><linkhref="${ctxStatic }/bootstrap-3.3.5-dist/css/bootstrap.min.css"type="text/css"rel="stylesheet"/>
-
<linkhref="${ctxStatic }/webupload/css/webuploader.css"type="text/css"
- <scripttype="text/javascript"src="${ctxStatic }/jquery/jquery-1.9.1.min.js"></script>
- <scripttype="text/javascript"src="${ctxStatic }/webupload/webuploader.min.js"></script>
-
<scripttype="text/javascript"src="${ctxStatic }/bootstrap-3.3.5-dist/js/bootstrap.min.js"
2.寫容器DOM
用來放置webuploader的dom
- <spanstyle="font-size:14px;"><divid="uploader-demo">
- <!--用來存放item-->
- <divid="thelist"class="uploader-list"></div>
- <div>
- <divid="filePicker">選擇圖片</div>
-
<buttonid="ctlBtn"
- </div>
- </div>
- </span>
[javascript] view plain copy
- <span style="font-size:14px;"><script type="text/javascript">
- $(function(){
- /*init webuploader*/
- var $list=$("#thelist"); //這幾個初始化全域性的百度文件上沒說明,好蛋疼。
- var $btn =$("#ctlBtn"); //開始上傳
- var thumbnailWidth = 100; //縮圖高度和寬度 (單位是畫素),當寬高度是0~1的時候,是按照百分比計算,具體可以看api文件
- var thumbnailHeight = 100;
- var uploader = WebUploader.create({
- // 選完檔案後,是否自動上傳。
- auto: false,
- // swf檔案路徑
- swf: '${ctxStatic }/webupload/Uploader.swf',
- // 檔案接收服務端。
- server: '/apm-web/a/test/',
- // 選擇檔案的按鈕。可選。
- // 內部根據當前執行是建立,可能是input元素,也可能是flash.
- pick: '#filePicker',
- // 只允許選擇圖片檔案。
- accept: {
- title: 'Images',
- extensions: 'gif,jpg,jpeg,bmp,png',
- mimeTypes: 'image/*'
- },
- method:'POST',
- });
- // 當有檔案新增進來的時候
- uploader.on( 'fileQueued', function( file ) { // webuploader事件.當選擇檔案後,檔案被載入到檔案佇列中,觸發該事件。等效於 uploader.onFileueued = function(file){...} ,類似js的事件定義。
- var $li = $(
- '<div id="' + file.id + '" class="file-item thumbnail">' +
- '<img>' +
- '<div class="info">' + file.name + '</div>' +
- '</div>'
- ),
- $img = $li.find('img');
- // $list為容器jQuery例項
- $list.append( $li );
- // 建立縮圖
- // 如果為非圖片檔案,可以不用呼叫此方法。
- // thumbnailWidth x thumbnailHeight 為 100 x 100
- uploader.makeThumb( file, function( error, src ) { //webuploader方法
- if ( error ) {
- $img.replaceWith('<span>不能預覽</span>');
- return;
- }
- $img.attr( 'src', src );
- }, thumbnailWidth, thumbnailHeight );
- });
- // 檔案上傳過程中建立進度條實時顯示。
- uploader.on( 'uploadProgress', function( file, percentage ) {
- var $li = $( '#'+file.id ),
- $percent = $li.find('.progress span');
- // 避免重複建立
- if ( !$percent.length ) {
- $percent = $('<p class="progress"><span></span></p>')
- .appendTo( $li )
- .find('span');
- }
- $percent.css( 'width', percentage * 100 + '%' );
- });
- // 檔案上傳成功,給item新增成功class, 用樣式標記上傳成功。
- uploader.on( 'uploadSuccess', function( file ) {
- $( '#'+file.id ).addClass('upload-state-done');
- });
- // 檔案上傳失敗,顯示上傳出錯。
- uploader.on( 'uploadError', function( file ) {
- var $li = $( '#'+file.id ),
- $error = $li.find('div.error');
- // 避免重複建立
- if ( !$error.length ) {
- $error = $('<div class="error"></div>').appendTo( $li );
- }
- $error.text('上傳失敗');
- });
- // 完成上傳完了,成功或者失敗,先刪除進度條。
- uploader.on( 'uploadComplete', function( file ) {
- $( '#'+file.id ).find('.progress').remove();
- });
- $btn.on( 'click', function() {
- console.log("上傳...");
- uploader.upload();
- console.log("上傳成功");
- });
- });
- </script></span>