C # System.IO.FileNotFoundException, когда файл определенно существует - PullRequest
1 голос
/ 08 ноября 2019

Я пытаюсь вернуть файл из действия в ASP.NET Core:

public IActionResult GetFile(string filePath) {
    return File("/home/me/file.png", "application/octet-stream");
}

Однако я получаю

System.IO.FileNotFoundException

в окне моего браузера:

Произошло необработанное исключение при обработке запроса. FileNotFoundException: не удалось найти файл: /home/me/file.png

Microsoft.AspNetCore.Mvc.Infrastructure.VirtualFileResultExecutor.ExecuteAsync (контекст ActionContext, результат VirtualFileResult)

* 1017 'Iмы пытались проверить, существует ли файл, используя System.IO.File.Exists, и искали его в Directory.GetFiles, что говорит о том, что файл существует. Я также попытался изменить тип носителя на image/png, но это ничего не помогает.

Почему я получаю эту ошибку и как ее исправить?

1 Ответ

1 голос
/ 08 ноября 2019

Это то, что я использую в приложении, и оно отлично работает:

   [HttpGet]
   [Route("download")]
   public async Task<iactionresult> Download([FromQuery] string file) {
       var uploads = Path.Combine(_hostingEnvironment.WebRootPath, "uploads");
       var filePath = Path.Combine(uploads, file);
       if (!System.IO.File.Exists(filePath))
           return NotFound();

       var memory = new MemoryStream();
       using (var stream = new FileStream(filePath, FileMode.Open))
       {
           await stream.CopyToAsync(memory);
       }
       memory.Position = 0;

       return File(memory, GetContentType(filePath), file);
   }

Этот фрагмент из здесь : мой код немного отличается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...