У меня есть форма, которая нуждается в multipart / form-data, потому что в этой форме есть поле файла.
Я использую ExpressJS и использую multer для обработки multipart / formdata.
Теперь мне также нужно проверить поля и JWT в заголовке.
В моем приложении я использую промежуточное ПО для типа приложения / JSON и делаю это так:
app.delete("/ticket/:ticketId", [
authValidation.validJWTNeeded,
authValidation.verifyIfNotLoggedOut,
authPermission.hasPermissionOrIsSameUser(staffRole),
ticketController.deleteById
]);
В каждом промежуточном программном обеспечении я передаю аргументы (req, res, next) и возвращаю next при необходимости, и я отлично работаю.
Мне не удалось сделать это с помощью multer без предварительной отправки файла.
В документации они будут делать что-то вроде этого, а это не то, что я хочу, потому что файл уже отправлен:
app.post("/route",
multer.upload.single("avatar"),
function (req, res, next) {
// req.file is the `avatar` file
// req.body will hold the text fields, if there were any
})
)
Я пытался делать такие вещи, но это не сработало:
app.post("/ticket", [
async (req, res, next) => {
multer.upload.none();
let jwt = //req.headers....... this is the jwt sent
//req.body should have all the fields
return next
},
authValidation.validJWTNeeded, //Here i verify the JWT for auth
authValidation.verifyIfNotLoggedOut, //About the same here
ticketController.verifyFields, // /!\ I need to verify if fields are correct
//function/middleware to upload using multer.upload.single("field"),
ticketController.insert // If everything above passed, then create the ticket and upload the file
]);
Итак, мой вопрос: как мне выполнить всю проверку, используя multer и данные, отправленные с шифрованием multipart / formdata?
Спасибо!