直接从web api核心端点返回base64编码图像

时间:2017-07-01 10:48:14

标签: asp.net-web-api asp.net-core

我已经看到了这些答案:

但这些服务器直接提供物理文件或从字节数组提供服务。

我们的Web API端点是否有办法直接从data:image / png; base64,(我们的base64字符串)返回content-type:image / png

2 个答案:

答案 0 :(得分:7)

从文件夹中读取文件非常简单。诀窍是使用 ASP.NET Core 中的 IHostingEnvironment 来获取当前的Web根路径。

FilesController

using System;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;

namespace DemoWebApiCore.Controllers
{
    [Route("api/[controller]")]
    public class FilesController : Controller
    {
        private readonly IHostingEnvironment _hostingEnvironment;

        public FilesController(IHostingEnvironment hostingEnvironment)
        {
            _hostingEnvironment = hostingEnvironment;
        }

        // GET api/files/sample.png
        [HttpGet("{fileName}")]
        public string Get(string fileName)
        {
            string path = _hostingEnvironment.WebRootPath + "/images/" + fileName;
            byte[] b = System.IO.File.ReadAllBytes(path);
            return "data:image/png;base64," + Convert.ToBase64String(b);
        }
    }
}

用法

<强> HomeController.cs

using Microsoft.AspNetCore.Mvc;

namespace DemoWebApiCore.Controllers
{
    public class HomeController : Controller
    {
        // GET: /<controller>/
        public IActionResult Index()
        {
            return View();
        }
    }
}

<强> Index.cshtml

<html>
<body>
    <img id="sample-img" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script type="text/javascript">
        $(function () {
            var url = "/api/files/sample.png";
            $.get(url, function (data) {
                console.log(data);
                $("#sample-img").attr('src', data);
            });
        })
    </script>
</body>
</html>

答案 1 :(得分:2)

如果要将图像作为base64字符串返回,可以这样做:

-->
相关问题