Node.js 如何将base64字符串用作映像?

Node.js 如何将base64字符串用作映像?,node.js,base64,Node.js,Base64,我有一个来自数据库的base64字符串,我想通过GET提供它。我知道必须先将其转换为缓冲区,然后我需要将内容类型设置为image/png(因为我的图像是png)。问题是图像没有显示出来。如果有帮助的话,我将使用Nest JS作为框架 这是我尝试提供的base64字符串: 我试着通过Chrome和Postman运行端点,得到了相同的结果。图像没有显示出来 // From auth.controller.ts @Get('avatar') @Header('Content-Type', 'imag

我有一个来自数据库的base64字符串,我想通过GET提供它。我知道必须先将其转换为缓冲区,然后我需要将内容类型设置为image/png(因为我的图像是png)。问题是图像没有显示出来。如果有帮助的话,我将使用Nest JS作为框架

这是我尝试提供的base64字符串:

我试着通过Chrome和Postman运行端点,得到了相同的结果。图像没有显示出来

// From auth.controller.ts
@Get('avatar')
@Header('Content-Type', 'image/png')
  async getAvatar(){
    return await this.authServ.getAvatar();
  }


// From auth.service.ts
async getAvatar() {
    const db = this.AUTH_REPOSITORY;
    const user = await db.findOne({where: {id: 1}});
    return Buffer.from(user.avatar, 'base64');
}

图像应该显示,但它没有显示。我在chrome中得到类似的东西:()

供参考:

问题:内容类型显示
image/png;charset=utf-8
当它应该是
image/png

解决方案:使用writehead和end

const buffer = return await this.authServ.getavatar()
res.writeHead(200, {'Content-Type': 'image/png'});   
res.end(buffer);

您是要将图像作为Base64编码实体,还是仅作为普通二进制实体提供服务?@haraldK结果表明错误与内容类型有关。express会自动附加charset=utf-8,这就是图像未显示的原因。找到了一种从标题中删除它的方法,它成功了!