バイナリデータ - Node.js

バイナリデータとは

Node.js でファイルを読み込む時、エンコーディングを指定しないと Buffer 型のデータとして扱われます。

Node.js で画像データを読み込むには、次のようにします。

let img = fs.readFileSync('./sample.jpg');

Node.js でバイナリデータを DB に保存する

データベースの作成

CREATE DATABASE sample;

テーブルの作成

CREATE TABLE img(
  id INT AUTO_INCREMENT,
  name VARCHAR(255) NOT NULL,
  img BLOB NOT NULL,
  PRIMARY KEY (id)
);

script.js

const fs = require('fs');
const mysql = require('mysql2/promise');

(async () => {
  const connection  = await mysql.createConnection({
    host: 'localhost',
    user: 'root',
    database: 'sample',
    password: 'password',
  });
  let img = fs.readFileSync('./flower.jpg'); // 画像ファイルの読み込み。バイナリデータとして読み込み

  try {
    const [results, fields] = await connection.execute('INSERT INTO img (name, img) VALUES (?, ?);', ["flower", img]);
    console.log(results);
  } catch (err) {
    console.log(err);
  }
  connection.end()
})();