ASP.NET静态WebMethod下载文件

时间:2015-07-21 10:35:03

标签: c# asp.net

我正在尝试使用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提供):

enter image description here

如何从Ajax启动文件下载?

2 个答案:

答案 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 ;;