Cri*_*ìna 8 node.js express multer
我有一个带有两个文件输入字段的简单表单。一个是关于图像的,另一个是关于 mp3 文件的。
我有一个使用multer作为文件上传系统的快速服务器。我想将图像保存img在 .mp3 文件中,并将 mp3 文件保存在文件music夹中。
这是我到目前为止尝试过的:
var musicUpload = multer({dest: 'music'});
var imgUpload = multer({dest: 'img'});
app.post('music',
musicUpload.single('music'),
imgUpload.single('img'),
function (req, res) {
...
});
Run Code Online (Sandbox Code Playgroud)
虽然这是形式:
<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>
Run Code Online (Sandbox Code Playgroud)
我需要以不同的方式处理 2 个不同的文件,这就是我两次使用“single”的原因。但是,不幸的是,我收到了“意外字段”错误消息。
怎样才能达到效果?
附言。关于多个文件上传的问题有很多,但没有一个解决了我的具体问题。在标记这个问题时不要太快:)
您可以尝试使用 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 })
Run Code Online (Sandbox Code Playgroud)
然后在端点上自己做:
var upload = multer({storage});
router.post('/song', upload.any(), function(req, res) {
...
});
Run Code Online (Sandbox Code Playgroud)
这可能比您的方法更清晰,我认为提供了您正在寻找的功能,因为它可以让您更精细地控制保存这些文件。(由@cristian 编辑)
| 归档时间: |
|
| 查看次数: |
5627 次 |
| 最近记录: |