每当我尝试在Internet Explore 6/9上使用Blueimp jQuery File Upload上传时,ASP.NET都无法在请求中找到这些文件。我有基本代码,看起来像
[HttpPost]
public JsonResult Images()
{
HttpPostedFileBase file = Request.Files[0] as HttpPostedFileBase;
}
我的jQuery看起来像:
$('#fileupload').fileupload({
//forceIframeTransport: true,
//contentType: 'multipart/form-data',
//replaceFileInput: false,
//contentType: 'text/plain',
//dataType: 'text/plain',
url: '@Url.Action("Images", "Upload")',
//autoUpload: true,
done: function (e, data) {
$('.file_result').html('');
$('.file_result').append(data.result.text + "<br>");
}
});
第一部分是它工作时,第二部分是我使用IE7-9时。
答案 0 :(得分:12)
通常这种问题是由于不包括jquery.iframe-transport.js。
该插件为Microsoft Internet Explorer和Opera等浏览器使用了iframe传输模块,这些浏览器在早期版本中不支持XMLHTTPRequest文件上传。
我在您的代码中看到的另一个问题是,您未在JavaScript代码中设置contentType
和dataType
,而您的回复Content-type
应为text/plain
在那里你可以找到2个工作实现供参考:
答案 1 :(得分:0)
我遇到了与此问题相似的问题,所以希望该决议可以帮助某人:
我正在做的是将文件发送到WCF服务中的Web方法,然后将它们写入Web服务器上的文件夹。一切都在Firefox和Chrome中运行良好,但是对于IE(不幸的是我们需要支持IE),文件内容正在标题中发送,但没有写在服务器上。
当我查看Fiddler的流量时,最终发生的事情是当请求与IE一起发送时,HttpContext中的FileName属性为“C:\ somelocalclientfolder \ somefile.txt”请求。在Chrome和Firefox中,它只是“somefile.txt”。我在一些语句中添加了解析和提取文件名,并且poof,问题解决了。文件在IE,Chrome和Firefox中成功编写。
此外,正如其他人所提到的,如果请求是使用IE进行的,则需要将响应Content-Type设置为“text / plain”。 .NET有一些类将返回用于发出请求的浏览器类型,所以我只是使用它们来确定服务器端,如果IE正在发出请求,然后只将Content-Type设置为“text / plain”具体情况。