goaty
goaty

Reputation: 127

How to use Multer to upload a file in two different directories?

I'm new in using nodejs and multer and I want to upload an image but in two different directories. I tried using two different middleware but since the first multer function returns a file destination I couldnt use it to upload in the other multer function. Is it possbile to upload a file using multer in two different directories?

Upvotes: 1

Views: 772

Answers (1)

hoangdv
hoangdv

Reputation: 16137

Create multiple storages and call them at the same time.

Example:

const app = require("express")();
const multer = require('multer');

const storageA = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, './storageA/');
  },
  filename: function (req, file, cb) {
    cb(null, file.originalname);
  }
});

const storageB = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, './storageB/');
  },
  filename: function (req, file, cb) {
    cb(null, file.originalname);
  }
});

const destA = multer({ storage: storageA });
const destB = multer({ storage: storageB });

function fileUpload(req, res, next) {
  destA.single('file')(req, res, next);
  destB.single('file')(req, res, next);
}

app.post("/", fileUpload, (req, res) => {
  res.json({ file: req.file });
});


app.listen(3000, () => {
  console.log("Server started");
});

The uploaded file will be store in ./storageA and ./storageB.

This is not an official way, but went I try it, it works!

Upvotes: 2

Related Questions