Blueimp jQuery文件上传和HttpHandler:没有文件,总是“OPTIONS”HttpMethod

时间:2012-02-19 18:56:26

标签: jquery file-upload httphandler blueimp http-method

我正在努力让Blueimp jQuery File-Uploader在Windows Server 2008 R2上使用IIS 7.5运行MVC 3。我正在使用HttpHandler处理上传,这被调用。但HttpHandler永远不会收到文件,也不会收到HttpMethod“POST”或“PUT”,总是“OPTIONS”。有谁知道这里有什么问题?

我从上传程序收到故障回调的唯一消息是“错误”。

这是我的JS:

$('#fileupload').fileupload(
{
    acceptFileTypes: /(\.|\/)(pdf)$/i,
    fail: function (e, data) {
        alert("Error: " + data.errorThrown + " Text-Status: " + data.textStatus);
        // data.jqXHR;
    },
    maxNumberOfFiles: 1
    /*add: function (e, data) {
        data.formData = [{ name: "name1", value: "1" }, { name: "name2", value: "2"}];

        data.submit();
    },
    submit: function (e, data) {
        //data.formData = [{ name: "name1", value: "1" }, { name: "name2", value: "2"}];
    }*/
}
);

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

好的添加一些代码就可以了:

服务器端:

        HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "http://example.net");
        HttpContext.Current.Response.AddHeader("Access-Control-Allow-Credentials", "true");

客户端:

$('#fileupload').fileupload(
{
    xhrFields: {
        withCredentials: true
    }
}

答案 1 :(得分:0)

当您从domain1.com提供网页并尝试上传到domain2.com时。 您的HTTP帖子请求已预检。

你的domain2.com实际上应该允许domain1.com上传文件。 在不同的服务器上有不同的机制来做到这一点。

在这种情况下,请阅读有关如何为您的服务器设置“Access-Control-Allow-Origin”的信息。

对于Amazon S3,它非常简单,它们有一个策略xml,您需要为此更新。