1. 程式人生 > >WebUploader檔案圖片上傳外掛的使用

WebUploader檔案圖片上傳外掛的使用

最近在專案中用到了百度的檔案圖片上傳外掛WebUploader。分享給大家

需要在http://fex.baidu.com/webuploader/download.html點選開啟連結下載WebUploader

         // 初始化Web Uploader***上傳圖片
	var uploader = WebUploader.create({
	    // 選完檔案後,是否自動上傳。
	    auto: true,
	    // 檔案接收服務端地址,自動生成縮圖需要後端完成。
	    server: '/common/uploadFile?imageZip=1',
	    // 選擇檔案的按鈕。可選。
	    // 內部根據當前執行是建立,可能是input元素,也可能是flash.
	    pick: '#sendimg',
	    fileNumLimit: 5,
	    //allowMagnify: false,
	    // 只允許選擇圖片檔案。
	    accept:{
	        title: 'Images',
	        extensions: 'gif,jpg,jpeg,bmp,png',
	        mimeTypes: 'image/*'
	    }
	});
	// 當有檔案新增進來的時候
		uploader.on( 'fileQueued', function( file ) {
		    var $li = $(
		            '<div style="float:right" id="' + file.id + '" class="delimg">' +
		                '<img class="addimg"><div class="closeimg">×</div>' +
		            '</div>'
		            ),
		    $img = $li.find('img');
		
		    // $list為容器jQuery例項
		    $("#piccon").append( $li );
		    // 建立縮圖
		    // 如果為非圖片檔案,可以不用呼叫此方法。
		    // thumbnailWidth x thumbnailHeight 為 100 x 100
		    uploader.makeThumb( file, function( error, src ) {
		        if ( error ) {
		            $img.replaceWith('<span>不能預覽</span>');
		            return;
		        }
		
		        $img.attr( 'src', src );
		    }, 100, 100 );
		    $li.on('click', function() {
			    $(this).remove();
			})
		});
		// 檔案上傳過程中建立進度條實時顯示。
			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,response ) {
				imgurl=response.fileName;//這裡可以拿到後臺返回的圖片名稱
				//alert(imgurl);
			    $( '#'+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();
			});


使用webupload封裝後的圖片上傳

     //圖片上傳初始化
   function webuploader(){
   	    var showimg=seturl("/dream/app/upload/");
		// 初始化Web Uploader***上傳圖片
		var uploader = WebUploader.create({
		    // 選完檔案後,是否自動上傳。
		    auto: true,
		    // 檔案接收服務端。
		    server: seturl("/dream/app/fileupload.php"),
		    // 選擇檔案的按鈕。可選。
		    // 內部根據當前執行是建立,可能是input元素,也可能是flash.
		    pick: '#sendimg',
		    fileNumLimit: 3,
		    method:"POST",
		    //allowMagnify: false,
		    // 只允許選擇圖片檔案。
		    accept:{
		        title: 'Images',
		        extensions: 'gif,jpg,jpeg,png',
		        mimeTypes: 'image/*'
		    }
		});
		// 當有檔案新增進來的時候
		uploader.on( 'fileQueued', function( file ) {

		});
		// 檔案上傳過程中建立進度條實時顯示。
		uploader.on( 'uploadProgress', function( file, percentage ) {
			
		});
		
		// 檔案上傳成功,給item新增成功class, 用樣式標記上傳成功。
		uploader.on( 'uploadSuccess', function( file,response ) {
			$("#piccon").append('<img id="'+response._raw+'" src="'+showimg+response._raw+'" class="addimg"><span id="'+response._raw+'" class="cimg">×</span>');
		    $( '#'+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();
		    $(".cimg").click(function(){
				$(this).prev("img").remove();
				$(this).remove();
			})
		});
   }