2

每当我尝试在 Internet Explorer 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 的时候。 在此处输入图像描述

4

2 回答 2

12

通常这种问题是由于不包括 jquery.iframe-transport.js。

该插件为 Microsoft Internet Explorer 和 Opera 等浏览器使用 Iframe 传输模块,这些浏览器在早期版本中不支持XMLHTTPRequest文件上传。

我在您的代码中看到的另一个问题是您没有在 javascript 代码中设置contentTypeanddataType并且您的响应 Content-type应该是text/plain

在那里您可以找到 2 个工作实现以供参考:

http://www.webtrendset.com/2011/06/22/complete-code-example-for-using-blueimp-jquery-file-upload-control-in-asp-net/

https://github.com/ieb/jQueryFileUpload.Net

于 2013-11-11T08:59:00.690 回答
0

我遇到了与此类似的问题,因此希望该解决方案可以帮助某人:

我正在做的是将文件发送到 WCF 服务中的 Web 方法,然后将它们写入 Web 服务器上的文件夹。在 Firefox 和 Chrome 中一切正常,但使用 IE(不幸的是,我们需要支持 IE),文件内容在标头中发送,但未写入服务器。

当我使用 Fiddler 查看流量时,最终发生的情况是,当使用 IE 发送请求时,HttpContext 请求中的 FileName 属性为“C:\somelocalclientfolder\somefile.txt”。在 Chrome 和 Firefox 中,它只是"somefile.txt"。我添加了一些语句来解析和提取文件名,然后就解决了问题。文件在 IE、Chrome 和 Firefox 中成功写入。

此外,正如其他人所提到的,如果请求是使用 IE 发出的,则需要将响应 Content-Type 设置为“text/plain”。.NET 有一些类将返回用于发出请求的浏览器类型,所以我只使用它们来确定服务器端是否 IE 正在发出请求,然后只将 Content-Type 设置为“text/plain”具体情况。

于 2013-11-13T16:54:50.027 回答