Multer:上传在不同的文件夹不同的文件类型

问题描述 投票:3回答:1

我有一个简单的形式,有两个文件输入字段。一个是关于图像,另一个是有关的MP3文件。

我有一个采用multer作为文件上传系统的Express服务器。我想将图像保存在img内部,music文件夹内的MP3文件。

这是我试过到目前为止:

var musicUpload = multer({dest: 'music'});
var imgUpload = multer({dest: 'img'});

app.post('music', 
         musicUpload.single('music'), 
         imgUpload.single('img'), 
         function (req, res) {
             ...
         });

虽然这是形式:

<form action="post" enctype="multipart/form-data" action="music">
    <input type="file" id="img" name="img">
    <input type="file" id="music" name="music">
    <input type="submit" value="Send">
</form>

我需要处理以不同的方式在2个不同的文件,这就是为什么我用“单”两次的原因。但是,unluckly,我收到一个“意外的领域”的错误消息。

如何才能达到的效果?

PS。有对SO有关的多个文件上传许多问题,但它们都没有解决我的特定问题。不要在萎靡不振的这个问题太快:)

node.js express multer
1个回答
4
投票

你可以尝试使用类似DiskStorage。按他们的文档:https://github.com/expressjs/multer

var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    if (file.mimetype === 'audio/mp3') {
      cb(null, 'songs')
    } else if (file.mimetype === 'image/jpeg') {
      cb(null, 'img')
    } else {
      console.log(file.mimetype)
      cb({ error: 'Mime type not supported' })
    }
  }
})


var upload = multer({ storage: storage })

然后在端点自己做的事:

var upload = multer({storage}); 
  router.post('/song', upload.any(), function(req, res) { 
  ...  
});

这可能是更清洁,然后你的方法,我想给你要找的,因为它让你在保存这些文件更精细的控制功能。 (与由@cristian编辑)

© www.soinside.com 2019 - 2024. All rights reserved.