Вернуть изображение из ядра веб-API asp.net как IActionResult

Каков наилучший способ вернуть файл изображения как IActionResult при использовании ядра веб-API asp.net? Я попытался вернуть строку base64, и она отлично работает. Но не считается эффективным. Есть ли способ вернуть сам объект файла изображения как IActionResult.


person Satyajit    schedule 18.05.2017    source источник


Ответы (4)


Вы можете использовать различные перегрузки функции File() в контроллерах, которые наследуются от Controller или ControllerBase.

Например, вы можете:

return File("~/Images/photo.jpg", "image/jpeg");

Здесь используется виртуальный путь, другие варианты включают предоставление ему байтового массива или Stream. Вы также можете указать имя загружаемого файла в качестве третьего аргумента, если это необходимо.

person juunas    schedule 18.05.2017
comment
мои изображения хранятся как строки base64, прочитанные из базы данных. Как я могу передать их прямо из ядра веб-API как image / png - person Charles Okwuagwu; 01.07.2017
comment
Задайте это как отдельный вопрос. - person juunas; 01.07.2017
comment
спасибо, stackoverflow.com/questions/44860069/ - person Charles Okwuagwu; 01.07.2017

[Route("getProductImage/v1")]
    [HttpGet]
    public async Task<IActionResult> getProductImage(GetProductImageQueryParam parammodel)
    {
        using (HttpClient client = new HttpClient())
        {
            MNimg_URL = MNimg_URL + parammodel.modelname;
            HttpResponseMessage response = await client.GetAsync(MNimg_URL);
            byte[] content = await response.Content.ReadAsByteArrayAsync();
            //return "data:image/png;base64," + Convert.ToBase64String(content);
            return File(content, "image/png", parammodel.modelname);
        }
    }

В веб-API ядра .NET вы можете использовать приведенный выше код

здесь GetProductImageQueryParam - это класс с входными параметрами

person Shigil P V    schedule 19.09.2017

Результат File называется FileContentResult в NET Core 3.x.

person Bernoulli IT    schedule 26.11.2019

Вы можете вернуть изображение, используя файл возврата в формате поток или байтов или используя его путь к изображению.

Есть несколько перегруженных методов для return File(//parameters);, которые вы можете использовать в методе действий контроллера mvc.

Контроллер API

[Route("api/[controller]")]
public class FileController : Controller {

    //GET api/file/id
    [HttpGet("{id}"]
    public async Task<IActionResult> GetFile(string id) {
        var stream = await {{//__get_stream_here__//}};
        var response = File(stream, "application/octet-stream"); // FileStreamResult
        return response;
    }    
}

or

var imageFileStream = System.IO.File.OpenRead("// image path");
return File(imageFileStream, "image/jpeg");

Надеюсь, что это поможет вам.

person Amol Bhor    schedule 18.05.2017