Как загрузить объект потока памяти через angularJS и webaAPI2
У меня есть проект, где я используюNPOI создать документ Excel из моего приложения Angular. Мне звонят из моего углового сервиса на мой контроллер webapi следующим образом:
function exportReportToExcel(report) {
return $http.post('reportlibrary/exportReport/', report, {
}).then(function (response) {
return response.data;
});
};
Внутри контроллера я делаю следующий звонок
[HttpPost]
public HttpResponseMessage ExportReport([FromBody]DTOs.Report report)
{
try
{
IReportPersistenceManager manager = ContainerConfigurator.Instance.Resolve<IReportPersistenceManager>();
MemoryStream ms = new MemoryStream();
, //we have to pass to the NOPI assemble file type as well as file name
//since we only deal with excel for now we will set it but this could be configured later.
long id = report.ReportId;
string mimeType = "application/vnd.ms-excel";
string filename = "unknown";
manager.ExportDataToExcel(id, (name, mime) =>
{
mimeType = mime;
filename = name;
return ms;
});
ms.Position = 0;
var response = new HttpResponseMessage();
response.Content = new ByteArrayContent(ms.ToArray());
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-excel");
return (response);
}
catch (Exception)
{
//error
return new HttpResponseMessage(System.Net.HttpStatusCode.BadRequest);
}
}
Это миграция из приложения MVC, и ранее мне удалось вернуть объект с помощью System.IO.File, чтобы вернуть объект, а также закрыть поток.
Я никогда не делал этого с Angular, но из того, что я прочитал, видно, что я могу поместить объект потока памяти в массив byteArray и передать его обратно клиенту.
Если это правильный подход, как я могу распутать этот объект, как только он возвращается к угловому сервису и контроллеру.
Цель здесь - позволить пользователю загрузить ранее сохраненный отчет в виде файла Excel.
Я на правильном пути? Есть ли более эффективный способ загрузки объекта потока памяти? Как я могу передать этот контекст в браузер?
заранее спасибо