1. 程式人生 > >WebUploader上傳圖片(不壓縮)

WebUploader上傳圖片(不壓縮)

<!DOCTYPE html>
<html>
<head>
  <title>webuploader圖片上傳</title>
  <meta charset="utf-8"/>
  <link href="lib/webuploader/0.1.5/webuploader.css" rel="stylesheet" type="text/css" />
</head>
<body>


<img id="face_image" style="width:50px;height:50px;border-radius: 25px;border: 1px solid #fff;"/>


<div id="uploader-demo">
  <div id="fileList" class="uploader-list"></div>
  <div id="filePicker">選擇圖片(webuploader)</div>
</div>




<script type="text/javascript" src="lib/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="lib/webuploader/0.1.5/webuploader.min.js"></script>
</body>
<script>
/**
* webuploader圖片上傳
*/
$(function() {
  console.log('webuploader圖片上傳。。。');


  var webuploaderutil = {};
  // Web Uploader例項
  var uploader;


  var $list = $('#fileList'),
  // 優化retina, 在retina下這個值是2
  ratio = window.devicePixelRatio || 1,
  thumbnailWidth = 100 * ratio, thumbnailHeight = 100 * ratio,


  // 初始化Web Uploader
  uploader = WebUploader.create({
    // 自動上傳。
    auto : true,
    compress:false,   //是否壓縮圖片,預設true

      // 檔案接收服務端。
    server : 'http://192.168.2.222:7070/file/upload',
    // 選擇檔案的按鈕。可選。
    // 內部根據當前執行是建立,可能是input元素,也可能是flash.
    pick : '#filePicker',
    chunked:true,
    chunkRetry: 10, // 如果某個分片由於網路問題出錯,允許自動重傳多少次?
    thread: 100,// 最大上傳併發數
    // 只允許選擇檔案,可選。
    accept : {
      title : 'Images',
      extensions : 'gif,jpg,jpeg,bmp,png',
      mimeTypes : 'image/*'
    }
  });


  // 當有檔案新增進來的時候
  uploader.on('fileQueued', function(file) {
    var $li = $('<div id="' + file.id + '" class="file-item thumbnail">'
      + '<img>' + '<div class="info">' + file.name + '</div>'
      + '</div>'), $img = $li.find('img');


    $list.append($li);


    // 建立縮圖
    uploader.makeThumb(file, function(error, src) {
      if (error) {
        $("#face_image").replaceWith('<span>不能預覽</span>');
        $img.attr( 'src', src );
        return;
      }


      $img.attr( 'src', src );
      $("#face_image").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, response) {
    $('#' + file.id).addClass('upload-state-done');


    //重新初始化
    //    webuploaderutil.uploadPicByResp(uploadDiv, imgEle, success, error);
    console.log('response:', response);
  });


  // 檔案上傳失敗,現實上傳出錯。
  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();
  });
});
</script>
</html>