Multer:在目的地设置不同的目的地属性

Multer : Setting different destinations in the destination Property

我有一个案例需要将图像存储在不同的目录中。所以我将 multer 设置为。

    app.use(multer({
  dest: path.join(__dirname, '`public/assets/img/profile`'),
  rename: function (fieldname, filename, req, res) {
    if(req.session.user) return req.session.user.id;
    else if(req.session.doctor) return req.session.doctor.id;
  }
}));

但是我需要更多目的地来存储图像。

public/assets/img/picture1

我看到过类似的问题,但我一个都看不懂。 任何帮助都会很棒。

您的示例来自相当旧的 multer 版本。我强烈建议您使用最新版本(出于安全原因)。

如果您确定需要旧版本,那么只需添加到您的多个选项:

app.use(multer({
  //...
  changeDest: function(dest, req, res) {
    return dest + '/user1'; 
  }
  //...
}));

您将在文档中获得更多详细信息(link 到旧版本)link

最新版本的 multer 工作方式略有不同。详细写如何使用新版本的 multer 将是一个很大的话题。您很容易在 Whosebug 答案或文档的实际版本中找到 link

我只写如何更改目标目录(文档中的示例):

var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, '/tmp/my-uploads')
  },
  filename: function (req, file, cb) {
    cb(null, file.fieldname + '-' + Date.now())
  }
})

var upload = multer({ storage: storage })

app.post('/profile', upload.single('picture'), function (req, res, next) {
  // req.file is the `picture` file
  // req.body will hold the text fields, if there were any
})