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

时间:2016-01-30 07:13:34

标签: 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.doctor) return req.session.doctor.id;
  }
}));

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

public/assets/img/picture1

我见过类似的问题,但我无法理解其中任何一个问题。 任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

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

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

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

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

最新版本的multer有点不同。这将是一个大的offtopic,详细写如何使用新版本的multer。您可以在stackoverflow答案或文档的实际版本link

中轻松找到

我只写了如何更改目标目录(例如来自docs):

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