node.js - Загрузить изображение в таблицу MySQL - PullRequest
0 голосов
/ 16 января 2019

Здравствуйте. У меня проблемы с отображением изображений, загруженных в MySQL. Мой стол выглядит так.

  CREATE TABLE IF NOT EXISTS images(id int primary key auto_increment,
  image_id varchar(255) NOT NULL, img LONGBLOB NOT NULL);

Я работаю с загруженным изображением на своем сервере примерно так

 const multer = require('multer');
 const upload = multer({ dest: `static/images/product_images/` });       

 app.post('/upload-image', upload.single('img'), (req, res) => {
  const img = req.file; 

  fs.readFile(img.path, (err, data) => {
   connection.query(`
          INSERT INTO product_images(product_id, img)
                    VALUES(?,?)`,
                    [
                        randomId(),
                        data
                    ],
                    (err, results) => {
                      //etc...
          });
      });
     });

Теперь, если я получу это изображение, оно будет выглядеть так

 "img": {
  "type": "Buffer",
  "data": [
    255,
    216,
    255,
    224,
    0,
    16,
    74,
    70,
    etc..
     ]
    }

Я делаю это правильно? Когда я получаю это изображение и пытаюсь отобразить его на внешнем интерфейсе, используя

 <img src='img-blob'/> 

Изображение не отображается. Что я делаю неправильно?

Я знаю, что загрузка изображений в БД считается плохой идеей, но у меня нет другого выбора

1 Ответ

0 голосов
/ 16 января 2019

Существует специальный синтаксис, который вы должны использовать, чтобы изображение было встроено в источник. Я извлек это из следующего ТАКОГО вопроса:

Как отобразить изображения Base64 в HTML?

<div>
    <p>Taken from wikpedia</p>
    <img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
    9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />
</div> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...