Мне нужно загрузить файлы и изображения размером не более 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», изображение открывается без каких-либо проблем.