При попытке вернуть файл из контроллера веб-API ASP.NET вы можете столкнуться с проблемами с ответ обрабатывается как JSON. Чтобы решить эту проблему, очень важно понять правильный подход к загрузке файлов в ASP.NET Core.
Чтобы вернуть файл в веб-API ASP.NET Core, вам необходимо вернуть производный IActionResult вместо HttpResponseMessage. Платформа будет интерпретировать HttpResponseMessage как модель, что приведет к проблеме с ответом JSON.
Ниже приведен обновленный пример кода, который демонстрирует, как вернуть файл с помощью IActionResult:
[Route("api/[controller]")]
public class DownloadController : Controller
{
// GET api/download/12345abc
[HttpGet("{id}")]
public async Task Download(string id)
{
Stream stream = await GetStreamBasedOnIdAsync(id);
if (stream == null)
return NotFound(); // Returns a NotFoundResult with Status404NotFound response
return File(stream, "application/octet-stream", $"{FileName}.{FileExtension}"); // Returns a FileStreamResult
}
}
Примечание: Не используйте для потока оператор using; в противном случае он будет удален до отправки ответа, что приведет к исключению или повреждению ответа. Платформа автоматически обработает удаление потока после завершения ответа.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3