小丿帅 2020-08-13 10:59 采纳率: 0%
浏览 112

ajaxFileUpload 文件上传 ie9 拒绝访问

现在接触的一个项目,用ajaxFileUpload上传文件,IE9的用户无法上传文件,检查发现submit()处报拒绝访问的错误,源码如下,希望有大神可以看看。

handleError: function(b, d, a, c) {
        if (b.error) {
            b.error.call(b.context || b, d, a, c)
        }
        if (b.global) { (b.context ? jQuery(b.context) : jQuery.event).trigger("ajaxError", [d, b, c])
        }
    },
    createUploadIframe: function(d, b) {
        var a = "jUploadFrame" + d;
        var c = '<iframe id="' + a + '" name="' + a + '" style="position:absolute; top:-9999px; left:-9999px"';
        if (window.ActiveXObject) {
            if (typeof b == "boolean") {
                c += ' src="javascript:false"'
            } else {
                if (typeof b == "string") {
                    c += ' src="' + b + '"'
                }
            }
        }
        c += " />";
        jQuery(c).appendTo(document.body);
        return jQuery("#" + a).get(0)
    },
    createUploadForm: function(a, l, g) {
        var j = "jUploadForm" + a;
        var c = "jUploadFile" + a;
        var b = jQuery('<form  action="" method="POST" name="' + j + '" id="' + j + '" enctype="multipart/form-data"></form>');
        var e = jQuery("#" + g + "  #" + l);
        var f = jQuery(e).clone();
        jQuery(e).attr("id", c);
        jQuery(e).before(f);
        var k = jQuery("#" + g + "  #" + g + "relationId");
        var d = jQuery(k).clone();
        jQuery(k).attr("id", c + "1");
        jQuery(k).before(d);
        var h = jQuery("#" + g + "  #" + g + "groupId");
        var i = jQuery(h).clone();
        jQuery(h).attr("id", c + "2");
        jQuery(h).before(i);
        jQuery(e).appendTo(b);
        jQuery(k).appendTo(b);
        jQuery(h).appendTo(b);
        jQuery(b).css("position", "absolute");
        jQuery(b).css("top", "-1200px");
        jQuery(b).css("left", "-1200px");
        jQuery(b).appendTo("body");
        return b
    },
    ajaxFileUpload: function(k) {
        k = jQuery.extend({},
        jQuery.ajaxSettings, k);
        var a = new Date().getTime();
        var b = jQuery.createUploadForm(a, k.fileElementId, k.win);
        var i = jQuery.createUploadIframe(a, k.secureuri);
        var h = "jUploadFrame" + a;
        var j = "jUploadForm" + a;
        if (k.global && !jQuery.active++) {
            jQuery.event.trigger("ajaxStart")
        }
        var c = false;
        var f = {};
        if (k.global) {
            jQuery.event.trigger("ajaxSend", [f, k])
        }
        var d = function(l) {
            var p = document.getElementById(h);
            try {
                if (p.contentWindow) {
                    f.responseText = p.contentWindow.document.body ? p.contentWindow.document.body.innerHTML: null;
                    f.responseXML = p.contentWindow.document.XMLDocument ? p.contentWindow.document.XMLDocument: p.contentWindow.document
                } else {
                    if (p.contentDocument) {
                        f.responseText = p.contentDocument.document.body ? p.contentDocument.document.body.innerHTML: null;
                        f.responseXML = p.contentDocument.document.XMLDocument ? p.contentDocument.document.XMLDocument: p.contentDocument.document
                    }
                }
            } catch(o) {
                jQuery.handleError(k, f, null, o)
            }
            if (f || l == "timeout") {
                c = true;
                var m;
                try {
                    m = l != "timeout" ? "success": "error";
                    if (m != "error") {
                        var n = jQuery.uploadHttpData(f, k.dataType);
                        if (k.success) {
                            k.success(n, m)
                        }
                        if (k.global) {
                            jQuery.event.trigger("ajaxSuccess", [f, k])
                        }
                    } else {
                        jQuery.handleError(k, f, m)
                    }
                } catch(o) {
                    m = "error";
                    jQuery.handleError(k, f, m, o)
                }
                if (k.global) {
                    jQuery.event.trigger("ajaxComplete", [f, k])
                }
                if (k.global && !--jQuery.active) {
                    jQuery.event.trigger("ajaxStop")
                }
                if (k.complete) {
                    k.complete(f, m)
                }
                jQuery(p).unbind();
                setTimeout(function() {
                    try {
                        jQuery(p).remove();
                        jQuery(b).remove()
                    } catch(q) {
                        jQuery.handleError(k, f, null, q)
                    }
                },
                100);
                f = null
            }
        };
        if (k.timeout > 0) {
            setTimeout(function() {
                if (!c) {
                    d("timeout")
                }
            },
            k.timeout)
        }
        try {
            var b = jQuery("#" + j);
            jQuery(b).attr("action", k.url);
            jQuery(b).attr("method", "POST");
            jQuery(b).attr("target", h);
            if (b.encoding) {
                jQuery(b).attr("encoding", "multipart/form-data")
            } else {
                jQuery(b).attr("enctype", "multipart/form-data")
            }
            jQuery(b).submit()
        } catch(g) {
            jQuery.handleError(k, f, null, g)
        }
        jQuery("#" + h).load(d);
        return {
            abort: function() {}
        }
    },
    uploadHttpData: function(r, type) {
        var data = !type;
        data = type == "xml" || data ? r.responseXML: r.responseText;
        if (type == "script") {
            jQuery.globalEval(data)
        }
        if (type == "json") {
            eval('data = " ' + data + ' " ')
        }
        if (type == "html") {
            jQuery("<div>").html(data).evalScripts()
        }
        return data
    }
  • 写回答

2条回答 默认 最新

  • threenewbee 2020-08-13 13:10
    关注

    用管理员权限运行下浏览器看看,似乎和文件系统的权限有关。

    评论

报告相同问题?

悬赏问题

  • ¥15 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错