我正在使用一个通过 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.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.setRequestHeader("X-File-Name", encodeURIComponent(name));
xhr.setRequestHeader("Content-Type", "application/octet-stream");
xhr.send(file);
所以基本上,上传的文件名可以作为qqfile
参数或作为 Header var: 使用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 中,这些都不起作用...Header var 为 null(在 Debug 中我清楚地看到此参数未发送)并且1qqfile
始终为"System.Web.HttpPostedFileWrapper"
.
有人知道如何为 IE 解决这个问题吗?
Ps:这个插件的Demo在这里。