• ajaxfileupload批量上传文件+图片尺寸限制


    1.首先展示ajaxfileupload代码,在这里修改为批量上传

    //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即可)

    //检查尺寸是否符合规范
    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封装代码进行提交

    <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 ....
    }
    }
  • 相关阅读:
    原来触发器不是单行数据触发
    C#-Json-抽象类的反序列化
    vs项目模板创建和使用
    c#-Json-Json字符串字段递归排序
    C# 递增操作符 ++ --
    C# in 参数修饰符
    C# 改变控制台背景颜色
    第一篇不知道说什么
    爬取性感小姐姐
    windows + Eclipse 汉化
  • 原文地址:https://www.cnblogs.com/richard1015/p/5659371.html
Copyright © 2020-2023  润新知