Return an image from asp.net web api core as IActionResult

徘徊边缘 提交于 2019-12-01 16:49:14

问题


What is the best way to return an image file as IActionResult while using asp.net web api core? I tried returning a base64 string and it works fine. But not considered as efficient. Is there a way using which we can return an image file object itself as IActionResult.


回答1:


You can use the various overloads of the File() function in controllers that inherit from Controller or ControllerBase.

For example, you can do:

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

This uses a virtual path, other options include giving it a byte array or a Stream. You can also give a download file name as a third argument if that is needed.




回答2:


[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);
        }
    }

In .net core web api you can use the above code

here GetProductImageQueryParam is a class with input parameters




回答3:


You can return image using return file with stream or bytes format or using its image path.

There are few overloaded methods for return File(//parameters); which you can use it in mvc controller's action method.

API Controller

[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");

Hope this will help you.




回答4:


A File result is called FileContentResult in NET Core 3.x.



来源:https://stackoverflow.com/questions/44038912/return-an-image-from-asp-net-web-api-core-as-iactionresult

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!