从MVC 5控制器流式传输Excel文件到浏览器。
从MVC 5控制器流式传输Excel文件到浏览器。
我正在尝试从MVC 5控制器中流式传输输出,并且在让浏览器(IE 10、11、Chrome)识别输出流并导入到Excel方面遇到了麻烦。我通过将输出保存到文件并打开它来验证流是否是一个有效的Excel文件。我使用Fiddler确定头和数据看起来都没问题(见下文)。控制器是由下面列出的jQuery ajax调用调用的。被调用的Controller方法也列在下面。ajax返回的状态通过错误函数返回,req.status = 200(OK),但status = 'parseerror'。任何帮助将不胜感激。
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"); }
Fiddler输出:
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
EDIT: 我意识到ajax调用正在接收所有数据,所以我现在想知道如何只调用控制器并传递参数。