У меня есть веб-приложение на угловом 6 с .NET webApi (.NET 4.5 framework).
То, что я делаю, - это сбор некоторого пользовательского ввода, отправка запроса в webapi.Webapi создает файл Excel (xlsx или xlsm) с некоторыми данными из базы данных.Теперь мне нужно скачать этот файл на машине пользователя.Я проверил на сервере, сгенерированный файл правильный и создан во временном каталоге на сервере.но он загружается как поврежденный файл на компьютере пользователя, и Excel не может открыть его.
Любая идея, как я могу это исправить.
Код WebApi
[System.Web.Http.HttpPut]
public ActionResult Put(Parameters inputs)
{
var path = GenerateFile(inputs);
string extension = new FileInfo(path).Extension;
switch (extension)
{
case ".xls":
return new FilePathResult(path, "application/msexcel");
case ".xlsx":
return new FilePathResult(path, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
case ".xlsm":
return new FilePathResult(path, "application/vnd.ms-excel.sheet.macroEnabled.12");
}
}
Угловойкод:
GenerateReprot() {
this.http.put(this.webApiURL, this.Input, 'arraybuffer')
.subscribe(
result => {
this.downLoadFile(result, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
alert('file downloaded successfully. ');
},
error => {
alert('error with downloading file.');
}
);
}
downLoadFile(data: any, type: string) {
var blob = new Blob([data], { type: type });
var url = window.URL.createObjectURL(blob);
var pwa = window.open(url);
if (!pwa || pwa.closed || typeof pwa.closed == 'undefined') {
alert('Please disable your Pop-up blocker and try again.');
}
}