【发布时间】:2015-10-10 18:23:50
【问题描述】:
我正在尝试使用 ASP.NET 静态 WebMethod 生成和下载 Excel 文件,该方法是通过 jQuery 的 Ajax 调用的。
[WebMethod]
public static void ExportToExcel(List<ResultGroupItem> searchResult)
{
HttpResponse response = HttpContext.Current.Response;
ExcelExporter excelExporter = new ExcelExporter();
excelExporter.ExportToExcel(searchResult, response);
}
在我的 ExportToExcel 方法中,我生成 xls 文件,然后添加 http 标头以下载文件。
// excelFileBytes is a byte array holding the data to be written
if (excelFileBytes != null)
{
response.Clear();
response.ContentType = "application/octet-stream";
response.AddHeader("content-disposition", string.Format("attachment; filename=\"{0}\"", fileName));
response.Flush();
response.BinaryWrite(excelFileBytes);
response.Flush();
response.End();
}
我知道我的代码正在运行,但从 Ajax 调用它并没有启动下载。这是我得到的响应(通过 Mozilla Firefox 中的 FireBug):
如何从 Ajax 启动文件下载?
【问题讨论】:
-
有问题吗?
-
是的,这看起来像是一些 XML 文件的 ZIP 存档(前导
PK字符)(希望很明显),这就是现代 Office XML 文件。所以,服务器代码看起来不错。 -
但是,再次阅读您的问题,我意识到您的客户端代码可能注定要失败。如果您搜索
ajax trigger download,您应该会找到大量结果来解释为什么它不起作用。