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

后端 未结 4 791
太阳男子
太阳男子 2021-01-11 16:58

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 ef

相关标签:
4条回答
  • 2021-01-11 17:18

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

    0 讨论(0)
  • 2021-01-11 17:28
    [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

    0 讨论(0)
  • 2021-01-11 17:33

    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.

    0 讨论(0)
  • 2021-01-11 17:34

    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.

    0 讨论(0)
提交回复
热议问题