背景
我正在開發一個Web應用程序,其中經過身份驗證的用戶可以創建事件併發送該事件的邀請。如何使用AngularJS或JavaScript,如何通過ajax下載文件?
其中一個要求是我添加一個按鈕,事件管理器可以點擊該按鈕以允許他/她下載發送的所有邀請的Excel/OOXML報告。
架構
的觀點和實際按鈕單擊事件都生活在它運行在ASP.NET MVC 4並使用大多是普通的HTML和AngularJs作爲平臺的「網絡」項目。
我也有一個BLL,DAL支持的API項目等API是.NET MVC的WebAPI,它是通過這個終端電子表格的提供者:
/// <summary>GET api/ExportInvitations/{id}</summary>
/// <summary>Gets an OOXML invitation report by event id.</summary>
public HttpResponseMessage Get(int id)
{
var wb = Invitation.ConstructInvitationSpreadsheet(id);
var result = new HttpResponseMessage(HttpStatusCode.OK);
var stream = new MemoryStream();
wb.SaveAs(stream);
result.Content = new StreamContent(stream);
result.Content.Headers.ContentType =
new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "HelloWorld.xlsx" };
return result;
}
在前端,我用這AngularJS腳本來調用構造並返回電子表格中的API端點(我總結爲簡便起見,此代碼):
$http.get('/api/ExportInvitations/' + id).success(function(data) {
//do stuff
});
的問題
一切似乎都很好,直到用戶應該看到電子表格作爲下載出現在瀏覽器中。對API的ajax調用沒有問題,並且API返回一個電子表格,因爲它應該 - 我從來沒有看到該文件在瀏覽器底部顯示爲下載(我正在使用Chrome)。
任何幫助表示讚賞。