Все, что вам нужно сделать, это вернуть File
:
public IActionResult SampleFileReport()
{
// do stuff
return File(bytes, mimetype, filename);
}
File
также имеет перегрузки, которые принимают Stream
и string
(путь и имя файла к файлу в файловой системе) в дополнение к byte[]
. mimetype
- это тип вашего контента, например, application/pdf
, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
(Excel) и т. Д. Последний параметр filename
является необязательным. Если он указан, то в ответ отправляется заголовок Content-Disposition: attachment
, который предлагает браузеру открыть диалоговое окно загрузки. В противном случае используется значение по умолчанию Content-Disposition: inline
, и браузер попытается загрузить возвращаемый файл непосредственно во вкладку / окно браузера, предполагая, что тип mime поддерживается для встроенного рендеринга браузера. Если нет, то вы получите диалог загрузки, независимо от того.