AspNet Core - 无法从 FileStreamResult 加载图像

AspNet Core - Could not load the image from FileStreamResult

请帮忙。

我已经搜索了几个小时,因为我无法在网站上显示图片。我在数据库中使用 byte[],然后在控制器中使用 return FileStreamResult。

下面是我的代码

.cshtml

 <img src="@Url.Action("GetImage", "User")" />

用户服务

我能够用 byte[] 值调用 api。

    public async Task<HttpResponseMessage> GetImage()
    {
        var client = _clientFactory.CreateClient("ApiName");
        var response = await client.GetAsync(apiUrl);
        return response;
    }

控制器

    [ResponseCache(Duration = 10)]
    [HttpGet]
    public async Task<IActionResult> GetImage()
    {
        var response = await _user.GetImage();
        if (response.IsSuccessStatusCode)
        {
            var logo = await response.Content.ReadAsByteArrayAsync();
            var ms = new MemoryStream(logo);
            FileStreamResult result = new FileStreamResult(ms, "image/png");
            result.FileDownloadName = "logo1223.png";
            return result;
        }

        return null;
    }

API

        [HttpGet("logo")]
        public async Task<IActionResult> GetImage()
        {
            var someByte= await GetSomeImage();
            return Ok(someByte);
        }

当我尝试下载或保存图像文件时,我得到了这个结果。

图片未从网站加载

更新 我尝试手动获取文件然后转换为 byte[] 并且图像在网站上正确显示, 我检查了他们是如何上传图片的……我发现了 他们使用以下代码将图像保存在数据库中。

var byteArr= Encoding.UTF8.GetBytes(Convert.ToBase64String(bArr.ToArray()))

尝试了这个修改过的控制器

 public async Task<FileContentResult> GetImage()
 {
            var img = Image.FromFile(@"C:\Downloads\test.png");
            byte[] bArr = imgToByteArray(img);
            var a = Encoding.UTF8.GetBytes(Convert.ToBase64String(bArr.ToArray()));
            return File(bArr, "image/png"); // WORKING!!!
            //return File(a, "image/png"); // NOT WORKING!!
}

有没有办法将其转换为原始字节图像?

主要问题是使用以下代码将徽标保存在数据库中

var byteArr= Encoding.UTF8.GetBytes(Convert.ToBase64String(bArr.ToArray()))

解决:转为原始byte[]得到图片

        [ResponseCache(Duration = 10)]
        [HttpGet]
        public async Task<IActionResult> GetImage()
        {
            var response = await _user.GetImage();
            if (response.IsSuccessStatusCode)
            {
               // I created new class Logo which contains byte[] Logo
                var logo = await response.Content.ReadAsAsync<Logo>();
               // Convert to original byte[]
                byte[] originalByte = Convert.FromBase64String(Encoding.UTF8.GetString(logo.Logo));
                 
                return File(originalByte, "image/png");
            }
    
            return null;
        }