Как скачать изображения из базы данных? - PullRequest
5 голосов
/ 30 сентября 2019

Мне нужно загрузить файлы и изображения размером не более 2 мегабайт в базу данных. Но есть проблема с загрузкой изображений. Все загруженные изображения ломаются и не открываются. Нет таких проблем с текстовыми файлами.

Результат загруженного изображения:

file 2.png

2.png: data

Загрузка изображений таким образом:

module.exports.upload = async function (req, res) {
  const sysFileObj = {
    COMMENTS: req.body.COMMENTS,
    NAME: req.file.originalname,
    MIMETYPE: req.file.mimetype,
    FILE_CONTENT: req.file.buffer
  };
  try {
    await SysFiles.create(sysFileObj);
    res.status(201).json(sysFileObj);
  } catch (e) {
    errorHandler(res, e);
  }
};

multer:

const multer = require('multer');

const storage = multer.memoryStorage()

let obj = {
    storage: storage,
    limits: {
        fileSize: 1024 * 1024 * 2 
    }
};

var upload = multer(obj)

module.exports = upload;

А вот при загрузке возникает проблема:

module.exports.download = async function (req, res) {
  try {
    let sysFile = await SysFiles.findById(req.params.SYSFILE_ID);
    var fileContents = Buffer.from(sysFile._props.FILE_CONTENT);
    var readStream = new stream.PassThrough();
    readStream.end(fileContents);
    res.set('Content-disposition', 'attachment; filename=' + sysFile._props.NAME);
    res.set('Content-Type', sysFile._props.MIMETYPE);
    readStream.pipe(res);
  } catch (e) {
    errorHandler(res, e);
  }
};

Что я делаю не так? Пожалуйста, скажите мне. Я должен сразу сказать, что мне нужно загрузить изображение в базу данных без каких-либо ссылок на любую папку, где изображения будут храниться.

Примечание:

Но, кстати, когда я загружал загруженное изображение с помощью «SQL Developer», изображение открывается без каких-либо проблем.

...