#excel #file #razor-pages
Вопрос:
Я пытаюсь сохранить файл Excel на рабочем столе пользователя, но у меня возникли некоторые проблемы. Метод, который я вызываю из AJAX:
public IActionResult OnPostExportMembersToExcel()
{
using (var workbook = new XLWorkbook())
{
var worksheet = workbook.Worksheets.Add("Test sheet");
int currentRow = 1;
worksheet.Cell(currentRow, 1).Value = "First name";
(...)
foreach (var member in members)
{
currentRow ;
worksheet.Cell(currentRow, 1).Value = member.FirstName;
(...)
}
using (var stream = new MemoryStream())
{
workbook.SaveAs(stream);
var content = stream.ToArray();
return File(content, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Test file.xlsx");
}
}
}
Все проходит без ошибок, но после возвращения ничего не происходит. Я попытался сохранить его с System.IO.File.WriteAllBytes()
помощью, и это сработало, но я не получу текущего пользователя, когда приложение будет опубликовано на сервере.
Что я должен сделать, чтобы «забрать» этот файл после возврата и позволить пользователю загрузить его?
Ответ №1:
Вы не можете сохранить загруженный файл в определенном месте на клиентском компьютере, поскольку у вас нет доступа к нему по соображениям безопасности. Ваш код выполняется на сервере. Он работает на вашей машине, потому что это одновременно сервер и клиент. Пользователь должен выбрать, что делать с загрузкой.