Прежде всего, Express / body-parser не обрабатывает загрузку файлов изначально, поэтому вы видите, что другие библиотеки загружаются для их обработки. Все они будут загружены как промежуточное ПО, чтобы их можно было вставить в запрос и обработать, что файл действительно был загружен.
Исходя из Symfony фона, я понимаю, откуда вы пришли с желанием обрабатывать вещи более вручную, как я делаю то же самое. Есть и другие альтернативы мультеру; Например, я использую express -fileupload , который позволяет загружать промежуточное ПО для загрузки всего вашего приложения, а затем вы можете использовать req.files
для обработки ваших загрузок. Например:
// load the file upload library as app middleware
const fileUpload = require('express-fileupload');
app.use(fileUpload({
limits: { fileSize: 50 * 1024 * 1024 },
}));
Тогда предположим, что у вас есть входной файл с именем 'foo':
<input name="foo" type="file" />
На вашем маршруте вы будете обрабатывать его так:
// now handle a file upload
app.post('/upload', function(req, res) {
console.log(req.files.foo); // the uploaded file object
});
Документация по загрузке файлов содержит примеры для объекта req.files
, а также параметры, которые можно передать самому промежуточному программному обеспечению.