asp.net webuploader粘貼,拖拽,點擊上傳圖片

demo.html代碼:
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>演示 - Web Uploader</title> <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]>         <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>         <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>     <![endif]--> <link rel="stylesheet" type="text/css" href="/webuploader/css/bootstrap.min.css"> <link rel="stylesheet" type="text/css" href="/webuploader/css/bootstrap-theme.min.css"> <link rel="stylesheet" type="text/css" href="css/style.css" /> <link rel="stylesheet" type="text/css" href="/webuploader/css/webuploader.css"> <link rel="stylesheet" type="text/css" href="/webuploader/css/demo.css"> </head> <body> <div id="wrapper"> <div class="page-body"> <div id="post-container" class="container"> <div class="page-container"> <h1 id="demo">Demo</h1> <p>您能夠嘗試文件拖拽,使用QQ截屏工具,而後激活窗口後粘貼,或者點擊添加圖片按鈕,來體驗此demo.</p> <div id="uploader" class="wu-example"> <div class="queueList"> <div id="dndArea" class="placeholder"> <div id="filePicker"></div> <p>或將照片拖到這裏,單次最多可選300張</p> </div> </div> <div class="statusBar" style="display:none;"> <div class="progress"> <span class="text">0%</span> <span class="percentage"></span> </div> <div class="info"></div> <div class="btns"> <div id="filePicker2"></div> <div class="uploadBtn">開始上傳</div> </div> </div> </div> </div> </div> </div> </div> <script type="text/javascript"> // 添加全局站點信息 var BASE_URL = '/webuploader'; </script> <script type="text/javascript" src="/webuploader/js/jquery-1.10.2.min.js"></script> <script type="text/javascript" src="/webuploader/js/bootstrap.min.js"></script> <script type="text/javascript" src="/webuploader/js/webuploader.js"></script> <script type="text/javascript" src="/webuploader/js/demo.js"></script> </body> </html>

demo.js代碼:
jQuery(function() {
    var $ = jQuery,    // just in case. Make sure it's not an other libaray.         $wrap = $('#uploader'),         // 圖片容器         $queue = $('<ul class="filelist"></ul>')             .appendTo( $wrap.find('.queueList') ),         // 狀態欄,包括進度和控制按鈕         $statusBar = $wrap.find('.statusBar'),         // 文件整體選擇信息。         $info = $statusBar.find('.info'),         // 上傳按鈕         $upload = $wrap.find('.uploadBtn'),         // 沒選擇文件以前的內容。         $placeHolder = $wrap.find('.placeholder'),         // 整體進度條         $progress = $statusBar.find('.progress').hide(),         // 添加的文件數量         fileCount = 0,         // 添加的文件總大小         fileSize = 0,         // 優化retina, 在retina下這個值是2         ratio = window.devicePixelRatio || 1,         // 縮略圖大小         thumbnailWidth = 110 * ratio,         thumbnailHeight = 110 * ratio,         // 可能有pedding, ready, uploading, confirm, done.         state = 'pedding',         // 全部文件的進度信息,key爲file id         percentages = {},         supportTransition = (function(){             var s = document.createElement('p').style,                 r = 'transition' in s ||                       'WebkitTransition' in s ||                       'MozTransition' in s ||                       'msTransition' in s ||                       'OTransition' in s;             s = null;             return r;         })(),         // WebUploader實例         uploader;     if ( !WebUploader.Uploader.support() ) {         alert( 'Web Uploader 不支持您的瀏覽器!若是你使用的是IE瀏覽器,請嘗試升級 flash 播放器');         throw new Error( 'WebUploader does not support the browser you are using.' );     }     // 實例化     uploader = WebUploader.create({         pick: {             id: '#filePicker',             label: '點擊選擇圖片'         },         dnd: '#uploader .queueList',         paste: document.body,         accept: {             title: 'Images',            // extensions: 'gif,jpg,jpeg,bmp,png',             mimeTypes: 'image/*'         },         // swf文件路徑         swf: BASE_URL + 'Uploader.swf',         disableGlobalDnd: true,         chunked: true,         // server: 'http://webuploader.duapp.com/server/fileupload.php',         server: '/webuploader/server/Uploader.ashx',         fileNumLimit: 300,         fileSizeLimit: 5 * 1024 * 1024,    // 200 M         fileSingleSizeLimit: 1 * 1024 * 1024    // 50 M     });     // 添加「添加文件」的按鈕,     uploader.addButton({         id: '#filePicker2',         label: '繼續添加'     });     // 當有文件添加進來時執行,負責view的建立     function addFile( file ) {         var $li = $( '<li id="' + file.id + '">' +                 '<p class="title">' + file.name + '</p>' +                 '<p class="imgWrap"></p>'+                 '<p class="progress"><span></span></p>' +                 '</li>' ),             $btns = $('<div class="file-panel">' +                 '<span class="cancel">刪除</span>' +                 '<span class="rotateRight">向右旋轉</span>' +                 '<span class="rotateLeft">向左旋轉</span></div>').appendTo( $li ),             $prgress = $li.find('p.progress span'),             $wrap = $li.find( 'p.imgWrap' ),             $info = $('<p class="error"></p>'),             showError = function( code ) {                 switch( code ) {                     case 'exceed_size':                         text = '文件大小超出';                         break;                     case 'interrupt':                         text = '上傳暫停';                         break;                     default:                         text = '上傳失敗,請重試';                         break;                 }                 $info.text( text ).appendTo( $li );             };         if ( file.getStatus() === 'invalid' ) {             showError( file.statusText );         } else {             // @todo lazyload             $wrap.text( '預覽中' );             uploader.makeThumb( file, function( error, src ) {                 if ( error ) {                     $wrap.text( '不能預覽' );                     return;                 }                 var img = $('<img src="'+src+'">');                 $wrap.empty().append( img );             }, thumbnailWidth, thumbnailHeight );             percentages[ file.id ] = [ file.size, 0 ];             file.rotation = 0;         }         file.on('statuschange', function( cur, prev ) {             if ( prev === 'progress' ) {                 $prgress.hide().width(0);             } else if ( prev === 'queued' ) {                 $li.off( 'mouseenter mouseleave' );                 $btns.remove();             }             // 成功             if ( cur === 'error' || cur === 'invalid' ) {                 console.log( file.statusText );                 showError( file.statusText );                 percentages[ file.id ][ 1 ] = 1;             } else if ( cur === 'interrupt' ) {                 showError( 'interrupt' );             } else if ( cur === 'queued' ) {                 percentages[ file.id ][ 1 ] = 0;             } else if ( cur === 'progress' ) {                 $info.remove();                 $prgress.css('display', 'block');             } else if ( cur === 'complete' ) {                 $li.append( '<span class="success"></span>' );             }             $li.removeClass( 'state-' + prev ).addClass( 'state-' + cur );         });         $li.on( 'mouseenter', function() {             $btns.stop().animate({height: 30});         });         $li.on( 'mouseleave', function() {             $btns.stop().animate({height: 0});         });         $btns.on( 'click', 'span', function() {             var index = $(this).index(),                 deg;             switch ( index ) {                 case 0:                     uploader.removeFile( file );                     return;                 case 1:                     file.rotation += 90;                     break;                 case 2:                     file.rotation -= 90;                     break;             }             if ( supportTransition ) {                 deg = 'rotate(' + file.rotation + 'deg)';                 $wrap.css({                     '-webkit-transform': deg,                     '-mos-transform': deg,                     '-o-transform': deg,                     'transform': deg                 });             } else {                 $wrap.css( 'filter', 'progid:DXImageTransform.Microsoft.BasicImage(rotation='+ (~~((file.rotation/90)%4 + 4)%4) +')');                 // use jquery animate to rotation                 // $({                 //     rotation: rotation                 // }).animate({                 //     rotation: file.rotation                 // }, {                 //     easing: 'linear',                 //     step: function( now ) {                 //         now = now * Math.PI / 180;                 //         var cos = Math.cos( now ),                 //             sin = Math.sin( now );                 //         $wrap.css( 'filter', "progid:DXImageTransform.Microsoft.Matrix(M11=" + cos + ",M12=" + (-sin) + ",M21=" + sin + ",M22=" + cos + ",SizingMethod='auto expand')");                 //     }                 // });             }         });         $li.appendTo( $queue );     }     // 負責view的銷燬     function removeFile( file ) {         var $li = $('#'+file.id);         delete percentages[ file.id ];         updateTotalProgress();         $li.off().find('.file-panel').off().end().remove();     }     function updateTotalProgress() {         var loaded = 0,             total = 0,             spans = $progress.children(),             percent;         $.each( percentages, function( k, v ) {             total += v[ 0 ];             loaded += v[ 0 ] * v[ 1 ];         } );         percent = total ? loaded / total : 0;         spans.eq( 0 ).text( Math.round( percent * 100 ) + '%' );         spans.eq( 1 ).css( 'width', Math.round( percent * 100 ) + '%' );         updateStatus();     }     function updateStatus() {         var text = '', stats;         if ( state === 'ready' ) {             text = '選中' + fileCount + '張圖片,共' +                     WebUploader.formatSize( fileSize ) + '。';         } else if ( state === 'confirm' ) {             stats = uploader.getStats();             if ( stats.uploadFailNum ) {                 text = '已成功上傳' + stats.successNum+ '張照片至XX相冊,'+                     stats.uploadFailNum + '張照片上傳失敗,<a class="retry" href="#">從新上傳</a>失敗圖片或<a class="ignore" href="#">忽略</a>'             }         } else {             stats = uploader.getStats();             text = '共' + fileCount + '張(' +                     WebUploader.formatSize( fileSize )  +                     '),已上傳' + stats.successNum + '張';             if ( stats.uploadFailNum ) {                 text += ',失敗' + stats.uploadFailNum + '張';             }         }         $info.html( text );     }     function setState( val ) {         var file, stats;         if ( val === state ) {             return;         }         $upload.removeClass( 'state-' + state );         $upload.addClass( 'state-' + val );         state = val;         switch ( state ) {             case 'pedding':                 $placeHolder.removeClass( 'element-invisible' );                 $queue.parent().removeClass('filled');                 $queue.hide();                 $statusBar.addClass( 'element-invisible' );                 uploader.refresh();                 break;             case 'ready':                 $placeHolder.addClass( 'element-invisible' );                 $( '#filePicker2' ).removeClass( 'element-invisible');                 $queue.parent().addClass('filled');                 $queue.show();                 $statusBar.removeClass('element-invisible');                 uploader.refresh();                 break;             case 'uploading':                 $( '#filePicker2' ).addClass( 'element-invisible' );                 $progress.show();                 $upload.text( '暫停上傳' );                 break;             case 'paused':                 $progress.show();                 $upload.text( '繼續上傳' );                 break;             case 'confirm':                 $progress.hide();                 $upload.text( '開始上傳' ).addClass( 'disabled' );                 stats = uploader.getStats();                 if ( stats.successNum && !stats.uploadFailNum ) {                     setState( 'finish' );                     return;                 }                 break;             case 'finish':                 stats = uploader.getStats();                 if ( stats.successNum ) {                     alert( '上傳成功' );                 } else {                     // 沒有成功的圖片,重設                     state = 'done';                     location.reload();                 }                 break;         }         updateStatus();     }     uploader.onUploadProgress = function( file, percentage ) {         var $li = $('#'+file.id),             $percent = $li.find('.progress span');         $percent.css( 'width', percentage * 100 + '%' );         percentages[ file.id ][ 1 ] = percentage;         updateTotalProgress();     };     uploader.onFileQueued = function( file ) {         fileCount++;         fileSize += file.size;         if ( fileCount === 1 ) {             $placeHolder.addClass( 'element-invisible' );             $statusBar.show();         }         addFile( file );         setState( 'ready' );         updateTotalProgress();     };     uploader.onFileDequeued = function( file ) {         fileCount--;         fileSize -= file.size;         if ( !fileCount ) {             setState( 'pedding' );         }         removeFile( file );         updateTotalProgress();     };     uploader.on( 'all', function( type ) {         var stats;         switch( type ) {             case 'uploadFinished':                 setState( 'confirm' );                 break;             case 'startUpload':                 setState( 'uploading' );                 break;             case 'stopUpload':                 setState( 'paused' );                 break;         }     });     uploader.onError = function( code ) {         alert( 'Eroor: ' + code );     };     $upload.on('click', function() {         if ( $(this).hasClass( 'disabled' ) ) {             return false;         }         if ( state === 'ready' ) {             uploader.upload();         } else if ( state === 'paused' ) {             uploader.upload();         } else if ( state === 'uploading' ) {             uploader.stop();         }     });     $info.on( 'click', '.retry', function() {         uploader.retry();     } );     $info.on( 'click', '.ignore', function() {         alert( 'todo' );     } );     $upload.addClass( 'state-' + state );     updateTotalProgress(); });
相關文章
相關標籤/搜索