使用plupload上傳(預覽圖片)


1. plupload常用配置

var uploader = new plupload.Uploader({
    /*runtimes: "flash",*/      // 不需要配置
    container: document.body,   // 使用flash必須采用body,否則定位出錯
    browse_button: ["fileBtn"], // 選擇文件按鈕id
    url: "/file/upload.php",
    flash_swf_url: './moxie.swf',
    multipart: true,
    multipart_params: {},
    file_data_name: 'files',
    filters:{
        prevent_duplicates: true,
        mime_types : [
            {
                title: 'Image files',
                extensions: 'jpg,jpeg,png,JPG,JPEG,PNG'
            }
        ],
        max_file_size: '10mb'
    }
});

2. uploader添加文件之后生成預覽

var MAX_FILE_NUM = 20;  // 上傳最大文件個數
// 添加文件
uploader.bind('FilesAdded',function(uploader,addFiles){
    var oldLen = uploader.files.length - addFiles.length;

    // 根據最大文件數量截取
    uploader.files.splice(MAX_FILE_NUM, uploader.files.length);
    addFiles = addFiles.slice(0, MAX_FILE_NUM - oldLen);

    // 對addFiles分別生成base64編碼,用於預覽
    $.each(addFiles || [], function(i, file) {

        if (!file || !/image\//.test(file.type)) return; //確保文件是圖片
        if (file.type == 'image/gif') {//gif使用FileReader進行預覽,因為mOxie.Image只支持jpg和png
            var fr = new mOxie.FileReader();
            fr.onload = function () {
                file.imgsrc = fr.result;
                fr.destroy();
                fr = null;
            }
            fr.readAsDataURL(file.getSource());
        } else {
            var preloader = new mOxie.Image();
            preloader.onload = function () {
                preloader.downsize(180, 120);//先壓縮一下要預覽的圖片
                var imgsrc = preloader.type == 'image/jpeg' ? preloader.getAsDataURL('image/jpeg', 80) : preloader.getAsDataURL(); //得到圖片src,實質為一個base64編碼的數據
                file.imgsrc = imgsrc;
                preloader.destroy();
                preloader = null;
            };
            preloader.load(file.getSource());
        }

    });
});

3. uploader上傳完成的回調

var upFlag = true;
// 單個文件上傳完成
uploader.bind('FileUploaded', function(uploader,file, res){
    try {
        var json = $.parseJSON(res.response);   // 后端返回的標志
        if(!json || !json.ret) {
            upFlag = false;
            console.log("上傳失敗!"+ (json.msg || ""));
        }
    } catch(e) {
        upFlag = false;
    }

});
// 所有文件上傳完成
uploader.bind('UploadComplete', function(uploader,files){
    if(upFlag) { // 上傳成功
        window.location.reload(true);
    } else {
        // 重新設置可上傳
        $.each(files || [], function(i, file) {
            file.status = plupload.QUEUED;
        });
    }
});

4. 注意使用flash的時候需要使用fresh方法來更新flash的位置

uploader.bind('Refresh', function(uploader,err){
    $('.moxie-shim').css('z-index', '14');
});

5. 開始上傳

upFlag = true;

uploader.setOption("multipart_params", {
    param1: "1",
    param2: "2"
});
uploader.start();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM