Загрузка нескольких файлов с помощью multer, но из разных полей?
как я могу заставить multer принимать файлы из нескольких полей типа файла?
у меня есть следующий код, который загружает один файл, используя multer в узле.js:
var storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, './public/uploads');
},
filename: function (req, file, callback) {
callback(null, file.fieldname + '-' + Date.now());
}
});
var upload = multer({ storage : storage });
app.post('/rest/upload', upload.array('video', 1), function(req, res, next){
...
}
из следующей формы, при условии, что только поле видео имеет значение (если я укажу оба, я получу ошибку "непредвиденное поле"):
<form action="/rest/upload" method="post" enctype="multipart/form-data">
<label>Video file: </label> <input type="file" name="video"/>
<label>Subtitles file: </label> <input type="file" name="subtitles"/>
<input type="submit"/>
</form>
из документации не ясно, как к этому подойти? Любые предложения будут оценены. Кстати, я попробовал следующий параметр вариации, без успеха:
app.post('/rest/upload', [upload.array('video', 1), upload.array('subtitles', 1)] ...
app.post('/rest/upload', upload.array('video', 1), upload.array('subtitles', 1), ...
app.post('/rest/upload', upload.array(['video', 'subtitles'], 1), ...
2 ответов
что вы хотите upload.fields()
:
app.post('/rest/upload',
upload.fields([{
name: 'video', maxCount: 1
}, {
name: 'subtitles', maxCount: 1
}]), function(req, res, next){
// ...
}