reactjs - 如何从 React 中的 api 获取字节数组图像
问题描述
我正在使用 React 前端和 ASP.NET Core Web API 后端编写应用程序。我想通过GET
API 的请求发送一些图像:
[Route("getimage")]
[HttpGet]
public async Task<IActionResult> GetImage()
{
var objectWithImage = db.SomeTable.SingleOrDefault();
byte[] image = objectWithImage.SomeImage;
return Ok(image);
}
如您所见,这是一种非常简单的方法,可以从数据库中获取我想要的图像并将其发送到站点。图像保存为byte
数组。
现在在前面,我正在尝试获取此图像并将其显示在<img src={this.state.image}>
class SomeClass extends React.Component {
constructor(props) {
super(props);
this.props = props;
this.state = {
image: null,
}
}
async getImage() {
fetch("http://localhost:5000/api/controller/getimage")
.then(response => response.json())
.then(data => {
console.log(data)
this.setState({
image: data
})
})
console.log(this.state.image)
}
显然不行,第一个console.log
是正常显示二进制数据,第二个setState
是我说之后image
的日志null
。
如何byte[]
正确获取图像并将其显示在页面上?我试图查看其他一些类似的线程,但似乎没有修复工作。我很新反应任何帮助表示赞赏
解决方案
您可以通过连接将字节数组转换为图像,"data:image/png;base64," + data;
您可以说this.setState({image: "data:image/png;base64," + data;})
async getImage() {
fetch("http://localhost:5000/api/controller/getimage")
.then(response => response.json())
.then(data => {
console.log(data)
this.setState({
image: data
})
})
console.log(this.state.image) // *1
}
*1 行是 print null 因为这发生在this.setState
. 并将this.setState
触发渲染功能,然后您的图像将显示出来。
希望它会有所帮助:)
推荐阅读
- python - 无法在类中调用函数?
- java - 为什么对自动装配字段所做的更改会影响另一个类中的另一个自动装配字段?
- android - Android Instrumented 测试配置问题
- pytorch - U-Net架构中,h和w不匹配,不知道是不是我理解错了
- javascript - React - 将对象转换为字符串以在 DevExpress React Grid 中显示
- office365 - 希望保护 Outlook 数据文件免遭盗窃
- algorithm - 为什么以下算法(循环排序?!)的时间复杂度是 O(n)?
- gulp - gulp-inject 什么都不注入
- javascript - 如何将暗网标签文件转换为常规 x、y、w、h?
- safari - 适用于所有浏览器的内联录音机