我已经看到了这些答案:
但这些服务器直接提供物理文件或从字节数组提供服务。
我们的Web API端点是否有办法直接从data:image / png; base64,(我们的base64字符串)返回content-type:image / png
答案 0 :(得分:7)
从文件夹中读取文件非常简单。诀窍是使用 ASP.NET Core 中的 IHostingEnvironment 来获取当前的Web根路径。
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字符串返回,可以这样做:
-->