Вставить строку base64 в блог mysql с node.js

#mysql #node.js #base64 #blob

#mysql #node.js #base64 #большой двоичный объект

Вопрос:

Я хочу вставить строку base64 в блог mysql. Для этого я использую приведенный ниже код, но при запуске кода у меня появляется следующая ошибка:

ER_DATA_TOO_LONG: данные слишком длинные для столбца ‘Imagine’ в строке 1

Imagine — это изображение base64 (png или jpg)

Node.js Код:

 async function inserimentoTipologia(Nome, Immagine) {
    var ret = true;
    var imgCast = new Buffer.from(Immagine, "base64");
    checkValueLoad = await new Promise((resolve, reject) => {
        return db.con.query("Insert into Categoria(Nome,Immagine) values( ? , ? ); ", [Nome, imgCast], function(err, results) {
            if (err) {
                ManageError.SendError("Errore: nella funzione inserimentoTipologia "   err);
                ret = false;
            }
            resolve(true);
        });
    });
    return ret;
}
  

Комментарии:

1. Вы не вставляете base64 строку — imgCast это Buffer . Какого типа Imagine ?

2. Согласен с @eol. . Какой тип вы установили для Immagine столбца? И вторая попытка выглядит так : const imgCast = new Buffer.from(Immagine).toString('base64') .

3. imagine — это base64 png

Ответ №1:

     var ret = true;
    checkValueLoad = await new Promise((resolve, reject) => {
        return db.con.query("Insert into Categoria(Nome,Immagine) values( ? , ? ); ", [Nome, Buffer.from(Immagine).toString('base64')], function(err, results) {
            if (err) {
                ManageError.SendError("Errore: nella funzione inserimentoTipologia "   err);
                ret = false;
            }
            resolve(true);
        });
    });
    return ret;
}