【问题标题】:Node.JS reading BLOB from mysqlNode.JS 从 mysql 读取 BLOB
【发布时间】:2023-03-31 19:49:01
【问题描述】:

我正在使用 Node.JS node-mysql 模块。一列具有 BLOB 类型并希望从中读取,如果可能,对其进行 base64 编码。我找不到任何有关如何执行此操作的信息。

有什么想法吗?

【问题讨论】:

    标签: mysql node.js base64 blob


    【解决方案1】:

    试试下面的 sn-p:

    var buffer = new Buffer( blob );
    var bufferBase64 = buffer.toString('base64');
    

    如果您的 blob 是二进制的,请改用以下内容:

    var buffer = new Buffer( blob, 'binary' );
    var bufferBase64 = buffer.toString('base64');
    

    您也可以将其简化为一行:

    var bufferBase64 = new Buffer( blob, 'binary' ).toString('base64');
    

    【讨论】:

    • blob 未定义!
    • new Buffer 现已贬值 - 使用 Buffer.from()
    • @RozzA Buffer.from(blob,'binary').toString();可以将 Blob 转换为字符串吗?
    【解决方案2】:

    注意:mysql-node 会自动将 Blob 对象转换为 javascript Buffer 对象。
    以上答案针对 base64 编码。

    对我来说,在节点中将其作为字符串读取的最简单方法是: myObject.myBlobAttr.toString('utf-8')


    截至 2015 年 1 月 28 日,
    来自 Felix 的mysql-node page

    类型转换

    为方便起见,默认情况下,此驱动程序会将 mysql 类型转换为原生 JavaScript 类型。存在以下映射:

    ...

    缓冲区

    TINYBLOB
    中号
    LONGBLOB
    BLOB
    二进制
    VARBINARY
    BIT(最后一个字节将根据需要用 0 位填充)


    编辑 UTF-8 的替代选项 (?)

    String.fromCharCode.apply(null, new Uint16Array(myObject.myBlobAttr));

    【讨论】:

      猜你喜欢
      • 2013-10-25
      • 2012-02-13
      • 2021-06-24
      • 2019-08-20
      • 2022-01-02
      • 2015-11-06
      • 2012-07-16
      • 1970-01-01
      • 2012-01-16
      相关资源
      最近更新 更多