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

Javascript Multer:在destination属性中设置不同的目的地,javascript,node.js,npm,multer,Javascript,Node.js,Npm,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.doct

我有一个案例,我需要在不同的目录中存储图像。因此,我已将骡子设置为

    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版本。我强烈建议您使用最新版本(出于安全原因)

如果您确定需要旧版本,则只需将以下选项添加到multer中:

app.use(multer({
  //...
  changeDest: function(dest, req, res) {
    return dest + '/user1'; 
  }
  //...
}));
您将在文档中获得更多详细信息(链接到旧版本)

最新版本的multer工作原理有点不同。这将是一个非常重要的主题,详细介绍如何使用multer的新版本。您可以很容易地在stackoverflow中找到答案,也可以从文档的实际版本中找到答案

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


您如何确定将图像存储在哪个目录中?谢谢,我将尝试实现它并查看。您能告诉我multer如何处理回调吗?我对multer中的筛选器感到非常失望,我无法实现这一点。我尝试了其他一些方法,但感觉不太好so@santhosh也许你可以发行新的(你可以在此评论中添加指向该问题的链接,然后我会尽力帮助你)。这是因为我有一些问题。这在评论中可读性较差。在新主题中,你可以编写,你使用的multer上的哪个版本(旧的或新的api),编写一些代码,这会给你带来麻烦。你想要实现什么,你得到什么。
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
})