Nodejs 如何把一个二进制数据存到数据库?

Nodejs 如何把一个二进制数据存到数据库?

数据库:mysql 库:node-mysql 如何把一个二进制数据存储到数据库?例如一个buffer

5 回复

Node.js 如何把一个二进制数据存到数据库?

如果你正在使用 node-mysql 这个流行的 MySQL 驱动来操作数据库,并且需要将二进制数据(如 Buffer 对象)存储到数据库中,你可以通过以下步骤实现。在这个示例中,我们将使用 MySQL 数据库,但是类似的逻辑也可以应用到其他类型的数据库。

步骤 1: 安装必要的依赖

首先,确保你已经安装了 mysql 模块。如果没有安装,可以通过 npm 安装:

npm install mysql

步骤 2: 创建连接并插入二进制数据

接下来,我们需要创建一个 MySQL 连接,并编写代码将 Buffer 对象插入到数据库表中。假设我们有一个名为 images 的表,其中包含两个字段:idimage_data

const mysql = require('mysql');

// 创建数据库连接
const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'password',
    database: 'test_db'
});

connection.connect((err) => {
    if (err) throw err;
    console.log("Connected to the database!");
});

// 示例二进制数据
const bufferData = Buffer.from([0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64]); // "Hello World"

// 插入数据到数据库
const insertQuery = "INSERT INTO images (image_data) VALUES (?)";
connection.query(insertQuery, [bufferData], (error, results, fields) => {
    if (error) throw error;
    console.log("Data inserted successfully!");
});

// 关闭连接
connection.end();

解释

  • Buffer 对象:在 Node.js 中,Buffer 对象用于处理二进制数据。上面的示例中,我们创建了一个表示 “Hello World” 的 Buffer 对象。

  • SQL 插入语句:我们使用参数化查询 (?) 来防止 SQL 注入攻击。[bufferData] 是传递给查询的参数数组。

  • 执行查询connection.query 方法用于执行 SQL 查询。如果插入成功,控制台会输出 “Data inserted successfully!”。

  • 关闭连接:最后,使用 connection.end() 方法关闭数据库连接。

以上就是如何使用 Node.js 和 node-mysql 将二进制数据(如 Buffer 对象)存储到 MySQL 数据库中的方法。希望这对你的需求有所帮助!


一般来说不建议将二进制 存进去 数据库,建议考虑存文件路径。

数据库字段设为BLOB类型

node-mysql 支持的buffer类型如下: TINYBLOB MEDIUMBLOB LONGBLOB BLOB BINARY VARBINARY BIT (last byte will be filled with 0 bits as necessary)

还是建议小文件不要放mysql,做静态支持就好了

要在 Node.js 中将二进制数据(如 Buffer)存储到 MySQL 数据库中,可以使用 node-mysql 库。以下是一个简单的示例,展示了如何实现这一功能:

示例代码

首先,确保你已经安装了 node-mysql 库:

npm install mysql

然后,你可以使用以下代码将二进制数据存储到 MySQL 数据库中:

const mysql = require('mysql');

// 创建连接
const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: 'password',
  database: 'testdb'
});

// 连接到数据库
connection.connect((err) => {
  if (err) throw err;
  console.log('Connected to the database!');
  
  // 创建表(如果不存在)
  const createTableQuery = `
    CREATE TABLE IF NOT EXISTS binary_data (
      id INT AUTO_INCREMENT PRIMARY KEY,
      data BLOB
    )
  `;
  
  connection.query(createTableQuery, (err, result) => {
    if (err) throw err;
    console.log('Table created or already exists!');
    
    // 创建一个 Buffer 对象
    const bufferData = Buffer.from('Hello, world!', 'utf-8');
    
    // 插入二进制数据
    const insertQuery = 'INSERT INTO binary_data (data) VALUES (?)';
    connection.query(insertQuery, [bufferData], (err, result) => {
      if (err) throw err;
      console.log('Data inserted successfully!');
      
      // 关闭连接
      connection.end();
    });
  });
});

解释

  1. 创建连接:使用 mysql.createConnection 方法创建与 MySQL 数据库的连接。
  2. 创建表:在连接成功后,创建一个包含 BLOB 类型字段的表,用于存储二进制数据。
  3. 插入二进制数据:使用 Buffer.from 方法创建一个 Buffer 对象,并将其插入到数据库中。注意,在执行 SQL 查询时,使用占位符 ? 来避免 SQL 注入攻击。

通过这种方式,你可以轻松地将二进制数据存储到 MySQL 数据库中。

回到顶部