У меня есть ASP MVC5 API, который создает файл excel.xlsx и возвращает его в FileContentResult.Все в памяти, так как не могу сохранить файл на диске сервера.Это работает нормально, если я обращаюсь к URL напрямую.
У меня есть приложение AngularJS, которому нужно передать огромный Json в API и получить сгенерированный файл .xlsx.
Я пытаюсьследующее:
Контроллер:
public async Task<FileContentResult> Excel([FromBody]GetGeneralFilterVM operationHistoryFilter = null)
{
var ListaOperazioni = await GetListaOperazioniData(operationHistoryFilter);
var Totals = await GetExcelTotalsData(operationHistoryFilter);
var excelExport = new ExcelExportEntity(new object[]
{
ListaOperazioni,
Totals,
});
var preFile = excelExport.DoExcel();
var arraybits = preFile;
var file = File(arraybits, "application/vnd.ms-excel", "OperationHistory.xlsx");
return file;
}
Angular:
$scope.exportExcel = () => {
$.ajax({
cache: false,
url: appPath + "controller/Excel",
data: filter,
success: function (response) {
var file = new Blob([response], { type: "application/vnd.ms-excel" });
var fileName = "excelFeliz.xlsx";
saveAs(file, fileName);
},
error: function (ajaxContext) {
alert('Export error: ' + ajaxContext.responseText);
}
});
}
Это даже загрузит файл, но при попытке открыть его будет поврежден.
Я настаиваю на AJAX из-за GetGeneralFilterVM, который я получаю в контроллере, он содержит вложенные объекты со многими свойствами, было бы очень сложно поместить это как параметры в URL.
У меня также нет никакого способасоздать и вернуть URL для загрузки, потому что я не могу сохранить файл на диск сервера.
Есть идеи?