Jquery 请求标头在IE中不可用
我使用的插件可以通过Ajax上传图像。这个插件的js源代码是 如果看到从1200开始的线,您会注意到:Jquery 请求标头在IE中不可用,jquery,ajax,asp.net-mvc,Jquery,Ajax,Asp.net Mvc,我使用的插件可以通过Ajax上传图像。这个插件的js源代码是 如果看到从1200开始的线,您会注意到: // build query string params = params || {}; params['qqfile'] = name; var queryString = qq.obj2url(params, this._options.action); xhr.open("POST", queryString, true); xhr.setReq
// build query string
params = params || {};
params['qqfile'] = name;
var queryString = qq.obj2url(params, this._options.action);
xhr.open("POST", queryString, true);
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.setRequestHeader("X-File-Name", encodeURIComponent(name));
xhr.setRequestHeader("Content-Type", "application/octet-stream");
xhr.send(file);
因此,上传的文件名基本上可以作为qqfile
参数或作为头变量:X-File-Name
使用。使用以下ASP.NET MVC代码,这两种方法在FF/Chrome中都能完美工作:
public JsonResult AjaxUpload(String qqfile)
{
String fileName = System.Web.HttpContext.Current.Request.Headers["x-file-name"];
//rest of the code
}
但是在IE中,这些都不起作用……头变量为null(在调试中,我清楚地看到这个参数没有被发送),并且1qqfile
总是“System.Web.HttpPostedFileWrapper”
有人知道IE如何解决这个问题吗
Ps:这个插件的演示是。我终于可以像这样做了:
public JsonResult AjaxUpload(HttpPostedFileWrapper qqfile)
{
//IE
if (qqfile != null)
{
fileName = qqfile.FileName;
}
else
{
fileName = System.Web.HttpContext.Current.Request.Headers["x-file-name"];
}
//rest of the code
}
似乎在IE
HttpPostedFileWrapper
中包含文件名和其他属性(而在其他浏览器中这是null
),很奇怪我不得不为IE做一个特例。我终于能够这样做了:
public JsonResult AjaxUpload(HttpPostedFileWrapper qqfile)
{
//IE
if (qqfile != null)
{
fileName = qqfile.FileName;
}
else
{
fileName = System.Web.HttpContext.Current.Request.Headers["x-file-name"];
}
//rest of the code
}
似乎在IEHttpPostedFileWrapper
中包含文件名和其他属性(而在其他浏览器中这是null
),非常奇怪,我不得不为IE做一个特例。做得好,先生:)认为这将是一个令人头痛的问题。你的解决方案对我有效。唯一的问题是qqFile.FileName为我返回了一个完整的路径,所以我不得不分割出实际的文件名。做得好,先生:)我认为这会是一个头痛的问题。你的解决方案对我有效。唯一的问题是qqFile.FileName为我返回了一个完整的路径,所以我不得不拆分出实际的文件名。