You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node与Angular14中MySQL BLOB图片转可显示图片及Buffer解析

问题解答

一、该格式的名称

这是Node.js Buffer对象的字符串化表示。当后端从MySQL读取BLOB类型的图片数据后,将其存储为Node.js的Buffer类型,若未对二进制数据做正确编码处理(比如转成Base64或返回二进制流)就直接序列化返回给前端,就会生成这种以<Buffer 开头、包含十六进制字节序列的字符串格式,本质是图片二进制数据的可读形式。

二、Angular 14中转换为可查看图片的步骤

1. 提取十六进制字节数据

从返回的字符串中剥离无用前缀后缀,提取纯十六进制字节序列:

// 假设接口返回的图片字段为imageBufferStr
const bufferStr = "<Buffer 89 50 4e 47 0d 0a 1a 0a ...>";
// 提取中间的十六进制字符串
const hexContent = bufferStr
  .replace(/^<Buffer\s+/, '') // 移除开头的"<Buffer "
  .replace(/\s+.*>$/, '')     // 移除结尾的" ... N more bytes>"部分
  .replace(/\s+/g, '');       // 去掉所有空格,拼接成连续的十六进制字符串

2. 转换为Uint8Array

将十六进制字符串转换为二进制字节数组:

// 把十六进制字符串按每两位分割,转成十进制数字,组成Uint8Array
const byteArray = new Uint8Array(
  hexContent.match(/.{1,2}/g)?.map(hex => parseInt(hex, 16)) || []
);

3. 生成可预览的图片URL

将字节数组转为Blob,再通过URL.createObjectURL生成图片的本地预览地址:

// 注意:这里的type要和实际图片类型匹配,比如JPG用"image/jpeg",PNG用"image/png"
const imageBlob = new Blob([byteArray], { type: 'image/png' });
this.imageUrl = URL.createObjectURL(imageBlob);

4. 在模板中展示图片

在组件模板中直接使用生成的URL:

<img [src]="imageUrl" alt="上传的图片" />

5. 清理资源(避免内存泄漏)

组件销毁时记得释放生成的URL资源:

import { OnDestroy } from '@angular/core';

export class YourComponent implements OnDestroy {
  imageUrl?: string;

  ngOnDestroy(): void {
    if (this.imageUrl) {
      URL.revokeObjectURL(this.imageUrl);
    }
  }
}

内容的提问来源于stack exchange,提问作者Tanish Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 00:30:56