ajaxfileupload批量上傳文件+圖片尺寸限制

1.首先展現ajaxfileupload代碼,在這裏修改成批量上傳css

//ajaxfileupload不展現所有代碼,這是修改前與修改後代碼對比,目的是上傳多個文件

 createUploadForm: function (id, fileElementId, data) {
        //create form    
        var formId = 'jUploadForm' + id;
        var fileId = 'jUploadFile' + id;
        var form = jQuery('<form  action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"></form>');
        if (data) {
            for (var i in data) {
                jQuery('<input type="hidden" name="' + i + '" value="' + data[i] + '" />').appendTo(form);
            }
        }
        //修改前代碼-------   
        //        var oldElement = jQuery('#' + fileElementId);
        //        var newElement = jQuery(oldElement).clone();
        //        jQuery(oldElement).attr('id', fileId);
        //        jQuery(oldElement).before(newElement);
        //        jQuery(oldElement).appendTo(form);
        //修改前代碼-------  

        //修改後代碼-------  
        for (var i in fileElementId) {
            var oldElement = jQuery('#' + fileElementId[i]);
            var newElement = jQuery(oldElement).clone();
            jQuery(oldElement).attr('id', fileId);
            jQuery(oldElement).before(newElement);
            jQuery(oldElement).appendTo(form);
        }
        //修改後代碼-------

        //set attributes
        jQuery(form).css('position', 'absolute');
        jQuery(form).css('top', '-1200px');
        jQuery(form).css('left', '-1200px');
        jQuery(form).appendTo('body');
        return form;
    },

2.展現js代碼 (裏面layer爲第三方插件忽略改成alert便可)html

//檢查尺寸是否符合規範
function uploadImgCheckedPx(f, w, h, callback) {
    var reader = new FileReader();
    reader.onload = function (e) {
        //判斷圖片尺寸
        var img = null;
        img = document.createElement("img");
        document.body.insertAdjacentElement("beforeend", img);
        img.style.visibility = "hidden";
        img.src = this.result;
        var imgwidth = img.naturalWidth;
        var imgheight = img.naturalHeight;
        if (imgwidth != w || imgheight != h) {
            document.body.removeChild(img);
            //隱藏 
            layer.closeAll('loading');
            layer.alert("圖片尺寸必須是" + w + "x" + h + "!");
            callback && callback(false);
        } else {
            callback && callback(true);
        }
    }
    var files = f.files;
    if (files.length > 0)
        reader.readAsDataURL(files[0]);
}
//上傳圖片到百度雲(這裏是向後臺提交文件,而後後臺進行上傳百度雲等雲服務器)
function uploadImgBack(inputArray, callback) {
    $.ajaxFileUpload
        ({
            url: "/Handler/ImgFileUpload.ashx", //用於文件上傳的服務器端請求地址
            async: true,
            secureuri: false, //通常設置爲false
            //fileElementId: 'uploadfile1', //修改前代碼
            fileElementId: inputArray, //已數組方式存儲 input Id
            dataType: 'json', //返回值類型 通常設置爲json
            //不能用success,不然不執行  
            complete: function (data) {
                try { data = jQuery.parseJSON(data.responseXML.documentElement.innerText); } catch (e) { data = jQuery.parseJSON(data.responseXML.documentElement.textContent); }
                if (data.state == "0") {
                    callback && callback(data.msg);
                } else {
                    //隱藏 
                    layer.closeAll('loading');
                    layer.alert(data.msg);
                    callback && callback(-1);
                }
            }
        });
}
//上傳圖片
/*
    inputArray 上傳inputId 數組
    callback 成功後回調函數
    w, px寬
    h, px高
*/
function uploadImg(inputArray, callback, w, h) {
    if (w && h) {
        var resStateArray = [];
        for (var i = 0; i < inputArray.length; i++) {
            var f = document.getElementById(inputArray[i]);
            uploadImgCheckedPx(f, w, h, function (state) {
                resStateArray.push(state);
            });
        }
        var tempInterval = setInterval(function () {
            console.log(resStateArray);
            if (resStateArray.length == inputArray.length) {
                clearInterval(tempInterval);
                if (resStateArray.indexOf(false) != -1) {
                    callback && callback(-1);
                } else {
                    uploadImgBack(inputArray, function (res) {
                        callback && callback(res);
                    });
                }
            }
        }, 500);
    } else {
        uploadImgBack(inputArray, function (res) {
            callback && callback(res);
        });
    }
}

3.展現html 調用js封裝代碼進行提交ajax

<input type="file" name="name" id="uploadBigImg1" hidden onchange="preImg(this.id,'BigImg1');" readonly datatype="*" nullmsg="請選擇圖片!" />
<input type="file" name="name" id="uploadBigImg2" hidden onchange="preImg(this.id,'BigImg2');" readonly />
  <input type="file" name="name" id="uploadBigImg3" hidden onchange="preImg(this.id,'BigImg3');" readonly />
  var imgBigArrar = [];
 imgBigArrar.push("uploadBigImg1");
 imgBigArrar.push("uploadBigImg2");
  imgBigArrar.push("uploadBigImg3");
//調用Js
  uploadImg(imgBigArrar, function (res) {
                if (res != -1) {
                   //res 是上傳完成的雲資源
                   //
                }
            }, 1242, 496);
//1242 寬,496高  不加即爲不限制尺寸大小    
//後臺C# 代碼接收請求
public class ImgFileUpload : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; string path = ""; string msg = ""; if (path.LastIndexOf('/') != path.Length - 1) path += "/"; var files = HttpContext.Current.Request.Files;//do something ....}}
相關文章
相關標籤/搜索