Wednesday, 2 October 2019

How to download images from the database?

I need to upload files and images no larger than 2 megabytes in the database. But there is a problem downloading images. All images that are downloaded break and do not open. No such problems with text files.

Result of the downloaded image:

file 2.png

2.png: data

Uploading images this way:

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;

And here there is a problem when download:

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);
  }
};

What am I doing wrong? Please tell me. I must say right away that I need to upload the image to the database without any links to any folder where the images will be stored.



from How to download images from the database?

No comments:

Post a Comment