微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – ASP.NET核心API控制器:Response.Body.WriteAsync base64字符串不起作用

我正在尝试从API控制器返回表示jpeg图像的base64字符串,并将其设置为< img>的src.但我所有的尝试都失败了.

这是非常简单的HTML

<img src="/api/TestBase64Image" alt="image test" />

而我的控制器:

[Route("api/[controller]")]
public class TestBase64ImageController : Controller
{
    private const string _base64Image = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/7Sfg.....";
    private const string _base64Image2 = "/9j/4AAQSkZJRgABAQEBLAEsAAD/7Sfg.....

    [HttpGet]
    public async Task Get()
    {
        Response.ContentType = "image/jpeg";
        //Response.ContentType = "text/plain";
        //Response.ContentType = new MediaTypeHeaderValue("image/jpeg").ToString();
        //Response.ContentType = new MediaTypeHeaderValue("text/plain").ToString();

        //Response.Headers.Add("Content-Length",_base64Image.Length.ToString());
        //HttpContext.Response.ContentLength = _base64Image.Length;

        await Response.Body.WriteAsync(Encoding.UTF8.GetBytes(_base64Image),_base64Image.Length);
        //await Response.Body.FlushAsync();
    }
}

我已经尝试过几个方面,比如删除FlushAsync(),改变定义ContentType的方式,包括数据:image / jpeg; base64,在字符串中或不是,但没有任何工作.

我已经看到在herehere中,在Response体流中写入是可行的,所以我认为我的方法很好(我之前尝试过返回一个简单的字符串但不能正常工作).

是的,我的base64字符串是正确的,因为我还试图将它直接包含在HTML中,图像显示正确.

我确切地说我不想使用任何JavaScript或Razor视图来实现这一点,只有纯HTML和我的控制器.

另请注意我在API控制器中.我不能像我们在一个空的ASP.NET核心项目的Startup类中的Configure方法中看到的那样做:

app.Run(async (context) =>
{
    await context.Response.WriteAsync("Hello World!");
});

即使两个响应的类型都是HttpResponse,我的控制器中的那个也没有任何Response.WriteAsync但是Response.Body.WriteAsync

感谢您的帮助,我正在搜索几个小时,但对于ASP.NET Core几乎没有相关的资源

解决方法

您仍然将数据作为base64文本返回,基本上 – 您将获得UTF-8编码形式,但这就是全部.

如果你真的只有图像的base64版本,你只需要解码:

byte[] image = Convert.FromBase64String(_base64Image2);
await Response.Body.WriteAsync(image,image.Length);

(请注意,它只需要您转换的base64 – 而不是数据URI.)

原文地址:https://www.jb51.cc/csharp/243442.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐