«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как вернуть файлы из контроллера веб-API ASP.NET Core?

Как вернуть файлы из контроллера веб-API ASP.NET Core?

Опубликовано 9 ноября 2024 г.
Просматривать:712

How to Return Files from an ASP.NET Core Web API Controller?

Работа с загрузкой файлов в веб-API ASP.NET Core

При попытке вернуть файл из контроллера веб-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