gpt4 book ai didi

node.js - Multer:在不同的文件夹中上传不同的文件类型

转载 作者:搜寻专家 更新时间:2023-10-31 23:10:46 24 4
gpt4 key购买 nike

我有一个带有两个文件输入字段的简单表单。一个是关于图像的,另一个是关于 mp3 文件的。

我有一个使用 multer 作为文件上传系统的快速服务器。我想将图像保存在 img 中,并将 mp3 文件保存在 music 文件夹中。

这是我到目前为止尝试过的:

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>

我需要以不同的方式处理这两个不同的文件,这就是我两次使用“单一”的原因。但是,不幸的是,我收到了“意外字段”错误消息。

怎样才能达到这个效果?

附言。 SO 上有很多关于多个文件上传的问题,但没有一个解决了我的具体问题。不要太快提出这个问题 :)

最佳答案

您可以尝试使用类似 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 编辑)

关于node.js - Multer:在不同的文件夹中上传不同的文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50641754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com