Итак, у меня есть контроллер, который вызывает сервис. Служба загружает файл с FTP-сервера, и контроллер должен затем вернуть файл браузеру пользователя для загрузки файла, но этого не происходит. Код ниже:
[HttpGet]
[ValidateAntiForgeryToken]
public async Task<IActionResult> DownloadFileAsync(string file)
{
// _ftpService.DownloadFileAsync(..) returns the downloaded files full physical path on the server: C:\Web\Images\file.jpg
var downloadedFile = await _ftpService.DownloadFileAsync(file);
// 1st attempt
return PhysicalFile(downloadedFile, "image/jpeg", "file.jpg");
// 2nd attempt
using (var stream = new FileStream(downloadedFile, FileMode.Open))
{
return File(stream, "image/jpeg", "file.jpg");
}
// 3rd attempt
byte[] fileBytes = System.IO.File.ReadAllBytes(downloadedFile);
return File(fileBytes, "image/jpeg", "file.jpg");
}
Окно вывода в VS пишет:
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker:Information: Executed action method DisplayStandManagerWeb.Controllers.DevicesController.DownloadFileAsync (DisplayStandManagerWeb), returned result Microsoft.AspNetCore.Mvc.FileContentResult in 6924.1833ms.
Microsoft.AspNetCore.Mvc.Infrastructure.FileContentResultExecutor:Information: Executing Microsoft.AspNetCore.Mvc.FileContentResult, sending file with download name 'file.jpg' ...
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker:Information: Executed action DisplayStandManagerWeb.Controllers.DevicesController.DownloadFileAsync (DisplayStandManagerWeb) in 6936.9755ms
Microsoft.AspNetCore.Routing.EndpointMiddleware:Information: Executed endpoint 'DisplayStandManagerWeb.Controllers.DevicesController.DownloadFileAsync (DisplayStandManagerWeb)'
Я на 100% уверен, что файл существует. С третьей попытки fileBytes
даже заполняется байтами файла, но браузер не загружает файл.
Когда я нажимаю кнопку для загрузки, ничего не происходит, но я вижу загрузку файла на веб-сервер. Когда я устанавливаю точки останова, я также вижу, как он попадает в каждую строку возврата, но загрузка не начинается. Я не получаю ошибок или чего-то еще, поэтому очень трудно понять, что происходит.