ASP.NET 静态 WebMethod 下载文件 [重复]
Posted
技术标签:
【中文标题】ASP.NET 静态 WebMethod 下载文件 [重复]【英文标题】:ASP.NET static WebMethod download file [duplicate] 【发布时间】: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
,您应该会找到大量结果来解释为什么它不起作用。
【参考方案1】:
有点不清楚,您要做什么,但如果我理解正确,您想在浏览器不打开新标签等的情况下启动文件下载。
你应该可以使用
<a href="/link/to/file" download>anchor text</a>
由于您的 content-disposition: 附件标头,可能不需要“下载”属性。
【讨论】:
您好 Jimmy,excel 文件是使用 javascript 提供的 List如果您使用的是 jquery,请从客户端尝试类似的操作
" $("form action='" + downloadUrl + "' method='post'> /form>").appendTo(document.body).submit() ";
【讨论】:
由于输入限制,表单标签格式不正确。以上是关于ASP.NET 静态 WebMethod 下载文件 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
JQuery ajax调用asp.net的webMethod
使用格式错误的 Json 调用 ASP.NET WebMethod 时捕获错误
如何在 UserControl (.ascx) 中调用 ASP.NET WebMethod