如何将 base64 字符串作为图像提供?

lue*_*rro 1 base64 node.js

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

这是我尝试提供的 base64 字符串: https: //pastebin.com/kbvGLXSp

我尝试通过 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');
}
Run Code Online (Sandbox Code Playgroud)

图像应该显示,但没有显示。我在 chrome 中得到类似的东西:( https://i.ibb.co/kMWJxn2/Capture.png )

lue*_*rro 5

以供参考:

问题: Content-Typeimage/png; charset=utf-8在应该显示的时候却显示了image/png

解决方案:使用writehead和end

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