使用WebUploader上傳圖片

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>uploader</title>
    <script src="jquery-3.1.0.min.js"></script>
    <script src="plupload-2.1.9/plupload.full.min.js"></script>
    <script src="uploader.js"></script>
    <style>
        *{
            box-sizing: border-box;
        }
        #uploader{
            width: 200px;
            height: 500px;
        }
        img{
            max-width: 100%;
        }
    </style>
</head>
<body>
 <div id="uploader">
     <!--用來放置加入上傳隊列的圖片-->
    <div class="upload_pic" id="upload_pic"></div>
     <!-- 上傳按鈕 -->
     <div>
         <a id="picker">
             <img src="upload.png" alt="">
         </a>
     </div>
 </div>
</body>
<script>
    $(function () {
        //初始化上傳
        uploader();
    })
</script>
</html>

js 需要把jquery , plupload.full.min.js 引入

uploader.js

/**
 * Created by zdeleted_upload_icondeleted_upload_icon on 2016/9/26.
 * 上傳圖片
 */
function uploader() {
    //uploader配置
    var uploader = new plupload.Uploader({
        browse_button:"picker",                                             //觸發文件選擇對話框的DOM元素,當點擊該元素後便後彈出文件選擇對話框。該值可以是DOM元素對象本身,也可以是該DOM元素的id
        url:"",                                                             //服務器端接收和處理上傳文件的腳本地址,可以是相對路徑(相對於當前調用Plupload的文檔),也可以是絕對路徑
        filters:{
            mime_types:[{ title : "Image files", extensions : "jpg,png" }], //用來限定上傳文件的類型
            max_file_size:"20M",                                            //用來限定上傳文件的大小
            prevent_duplicates:"true"                                       //是否允許選取重複的文件,爲true時表示不允許,爲false時表示允許
        },
        multipart:"true",                                                   //爲true時將以multipart/form-data的形式來上傳文件,爲false時則以二進制的格式來上傳文件
        runtimes:"html5,htm4",                                              //用來指定上傳方式
        chunk_size:"0",                                                     //分片上傳文件時,每片文件被切割成的大小,爲數字時單位爲字節。也可以使用一個帶單位的字符串,如"200kb"。當該值爲0時表示不使用分片上傳功能
        max_retries:"0"                                                     //當發生plupload.HTTP_ERROR錯誤時的重試次數,爲0時表示不重試
    });
    //初始化
    uploader.init();
    //添加監聽事件,當文件添加到上傳隊列後觸發
    uploader.bind("FilesAdded",function (uploader,files) {
        for (var i = 0; i < files.length; i++){
            //構造html代碼
            var html = '<a id="file-' + files[i].id +'"></a>';
            $(".upload_pic").before($(html));

            //點擊刪除按鈕,刪除上傳的文件
            $(".deleted_upload_icon").click(function () {
                $(this).parent().remove();
            });
            !function(i){
                previewImage(files[i],function(imgsrc){
                    $('#file-'+files[i].id).append('<img src="'+ imgsrc +'" />');
                })
            }(i);

        }
    });
    //添加監聽事件,當上傳發生錯誤時
    uploader.bind("Error",function (uploader,errObject) {
        console.log(errObject.code);
    });
}
//圖片預覽 file爲plupload事件監聽函數參數中的file對象,callback爲預覽圖片準備完成的回調函數
function previewImage(file,callback){
    //確保文件是圖片
    if(!file || !/image\//.test(file.type)) return;
    //gif使用FileReader進行預覽,因爲mOxie.Image只支持jpg和png
    if(file.type=='image/gif'){
        var fr = new mOxie.FileReader();
        fr.onload = function(){
            callback(fr.result);
            fr.destroy();
            fr = null;
        };
        fr.readAsDataURL(file.getSource());
    }else{
        var preloader = new mOxie.Image();
        preloader.onload = function() {
            //先壓縮一下要預覽的圖片,寬86,高86
            // preloader.downsize( 86, 86 );
            //得到圖片src,實質爲一個base64編碼的數據
            var imgsrc = preloader.type=='image/jpeg' ? preloader.getAsDataURL('image/jpeg',80) : preloader.getAsDataURL();
            callback && callback(imgsrc); //callback傳入的參數爲預覽圖片的url
            preloader.destroy();
            preloader = null;
        };
        preloader.load( file.getSource() );
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章