Multer. MulterError: Unexpected field at wrappedFileFilter
Во общем у меня есть две формы для загрузки файлов, первая форма загружает ауйди файлы (успешно).
Но когда я добавил вторую форму для загрузки картинки в профиль - то после того как добавил второй "app.use(fileImg.single(avatar));" у меня выскакивает ошибка в консоль Unexpected field at wrappedFileFilter. Если только загрузку аватарки в профииль сделаю то все будет работать, также и с загрузкой аудио на сайт, НО! если подключили два .single в главном файле kek.js то выдает ошыбку(
Главный файл в котором подключаю два валидатора single
let express = require(`express`);
let Index = require(`./router/index`);
let handlebars = require(`express-handlebars`);
let Auth = require(`./router/auth`);
let session = require(`express-session`);
let MongoStore = require(`connect-mongodb-session`)(session);
let keys = require(`./keys/key`);
let flash = require(`connect-flash`);
let protect = require(`./middleware/protect`); // Проверка сессии на авторизацию а также csrf защиты
let csrf = require(`csurf`);
let Reset = require(`./router/reset`); // Роут возстановления пароля
let Error = require(`./router/error`); // Роут страницы не найденой
let Music = require(`./router/music`); // Роут страницы песен
let Adminka = require(`./router/adminka`); // Роут админки музыки
let File = require(`./middleware/file`);
let fileImg = require(`./middleware/fileImg`);
let Profile = require(`./router/profile`);
let app = express();
let hbs = handlebars.create({
defaultLayout: `main`,
extname: `hbs`
})
let store = new MongoStore({
collection: `sessions`,
uri: keys.mongoURL
})
app.engine(`hbs`, hbs.engine);
app.set(`view engine`, `hbs`);
app.set(`views`, `views`);
app.use(express.static(`public`))
app.use(`/music`, express.static(`music`));
app.use(`/avatar`, express.static(`avatar`));
app.use(express.urlencoded({extended: true}));
app.use(express.json());
app.use(session({
secret: keys.secret,
resave: false,
saveUninitialized: false,
store: store
}))
app.use(File.single(`video`));
app.use(fileImg.single(`avatar`));
app.use(flash());
app.use(csrf());
app.use(protect);
app.use(`/`, Index);
app.use(`/auth`, Auth);
app.use(`/reset`, Reset);
app.use(`/music`, Music);
app.use(`/adminka`, Adminka);
app.use(`/profile`, Profile);
app.use(Error);
app.listen(3000, ()=>{
console.log(`Сервер запущен`);
})
Содержимое валидатора аудио, middleware/file.js
let multer = require(`multer`);
let storage = multer.diskStorage({
destination(req,file,cb) {
cb(null, `music`)
},
filename(req,file,cb) {
cb(null, `Видео чидори - ` + file.originalname)
}
})
let allowedTypes = ['audio/mp3', `audio/mp4`, `audio/mpeg`];
let fileFilter = (req,file,cb) => {
if(allowedTypes.includes(file.mimetype)){
cb(null, true)
} else {
cb(null, false)
}
}
module.exports = multer({
storage: storage,
fileFilter: fileFilter
})
Содержимое валидатора аватарки для профиля, middleware/fileImg.js
let multer = require(`multer`);
let storage = multer.diskStorage({
destination(req,file,cb){
cb(null, `avatar`)
},
filename(req,file,cb) {
cb(null, `Аватарка - ` + file.originalname)
}
})
let allowedTypes = [`image/jpg`, `image/jpeg`, `image/png`];
let fileFilter = (req,file,cb) => {
if(allowedTypes.includes(file.mimetype)){
cb(null, true)
}else{
cb(null, false)
}
}
module.exports = multer({
storage: storage,
fileFilter: fileFilter
})
Форма загрузки аудио для file.js
<div class="auth">
{{#if succesful}}
<div class="succesful">{{succesful}}</div>
{{/if}}
{{#if error}}
<div class="error">{{error}}</div>
{{/if}}
<form id="auth" action="/adminka/save" method="post" enctype="multipart/form-data">
<div class="title">Админка добавления музыки</div>
<label for="">Video</label>
<input name="video" type="file" placeholder="src video">
<input type="hidden" name="_csrf" value="{{csrf}}">
<button type="submit">Добавить музыки</button>
</form>
</div>
Форма заагрузки аватарки для fileImg.js
<div class="profile">
<form action="" method="post" enctype="multipart/form-data">
<div class="avatarka">
<img src="lola.png" alt="картинка">
</div>
<input name="avatar" type="file">
<div class="name">Никнейм</div>
<input type="text" placeholder="Скумбрия">
<div class="created">Создан: 15:16 20.07.2021</div>
<input type="hidden" name="_csrf" value="{{csrf}}">
<button type="submit">Сохранить</button>
</form>
</div>