我正在尝试从MVC 5控制器流式传输输出,并且无法识别浏览器(IE 10,11,Chrome) 输出流和管道到Excel。我通过保存输出来验证该流是有效的Excel文件 一个文件并打开它。我用Fiddler来确定标题和数据看起来没问题(见下文)。控制器是 被下面列出的jquery ajax调用调用。调用的Controller方法也列在下面。 ajax返回状态返回错误函数,req.status = 200(OK),但status =' parseerror'。 任何帮助将不胜感激。
$.ajax({
type: "POST",
url: "http://localhost:42655/Home/Save",
data: paramdata,
contentType: defaultjsonformat,
dataType: 'json',
success: function(data) {
alert(data);
},
statusCode: {
404: function (content) { alert('cannot find resource'); },
500: function (content) { alert('internal server error'); }
},
error: function (req, status, errorObj) {
if (status === "timeout") {
alert('Timeout');
} else {
alert(status);
}
}
);
HomeController.cs:
[AcceptVerbs(HttpVerbs.Post)]
public FileStreamResult Save(string document)
{
document = document.Trim();
byte[] bytefile = Export.Excel.ProcessExport.ExportFile(document);
var stream = new MemoryStream(bytefile);
return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", document + DateTime.Now.ToString("yyyy-MM-dd-hh-mm-ss") + ".xlsx");
}
提琴手输出:
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Server: Microsoft-IIS/8.0
X-AspNetMvc-Version: 5.2
Content-Disposition: attachment; filename=test2015-04-03-06-52-04.xlsx
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?RDpcTFJQXFJvb3QtREVWXFNjZW5hcmlvXFNjZW5hcmlvXEhvbWVcU2F2ZQ==?=
X-Powered-By: ASP.NET
Date: Fri, 03 Apr 2015 13:52:04 GMT
Content-Length: 9779
PK 6 F H
编辑:我意识到ajax调用正在接收所有数据,所以我现在想知道如何用参数调用控制器。
答案 0 :(得分:0)
我认为你无法通过jQuery ajax调用实现你想要的东西。它不是为了下载这样的文件而设计的。
我很幸运地实现了与您相同的行为(使用以下插件异步地从MVC控制器返回excel电子表格):{{3}}。
希望有所帮助:)