我正在尝试使用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启动文件下载?
答案 0 :(得分:0)
有点不清楚,你想要做什么,但如果我理解你的话,你想要在没有浏览器打开新标签等的情况下启动文件下载。
您应该可以使用
执行此操作<a href="/link/to/file" download>anchor text</a>
由于您的内容处置:附件标题,“download”属性可能不是必需的。
答案 1 :(得分:-1)
如果您使用的是jquery
,请尝试从客户端进行此类操作&#34; $(&#34;表单操作=&#39;&#34; + downloadUrl +&#34;&#39; method =&#39; post&#39;&gt; / form>" ;).appendTo (document.body).submit()&#34 ;;