请帮忙。
我已经搜索了几个小时,因为我无法在网站上显示图像。我正在使用数据库中的 byte[] 然后在控制器中返回 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);
}
当我尝试下载或保存图像文件时,我得到了这个结果。
图片未从网站加载
更新 我尝试手动获取文件然后转换为字节 [] 并且图像在网站上正确显示,我检查了他们如何上传图像......我发现他们正在使用下面的代码将图像保存在数据库中。
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!!
}
有没有办法将其转换为原始字节图像?