Как я могу загрузить файлы в ExpressJS 4.x
Я знаю, что есть что-то вроде multiparty
, а также busboy
и грозный. Я хочу знать, есть ли возможность загружать файлы без них.
2 ответа
Если вы хотите загружать файлы, вы должны иметь возможность анализировать многокомпонентный контент. Вы можете использовать его для анализа или реализовать свой собственный. Вот список модулей, которые могут вам помочь:
Прямой анализ (по убыванию популярности по звездам Github по состоянию на ноябрь 2016 года):
Middleware:
- multer - основан на busboy, гораздо более популярен, чем варианты ниже
- промежуточное ПО busboy - последний коммит, апрель 2014
- многопартийное промежуточное ПО - предлагает не использовать на странице Github
И то и другое:
- parted - последний коммит янв 2015
Если вы хотите написать свой собственный парсер, вы можете посмотреть, как это делают вышеупомянутые модули. Проверьте эти ссылки также:
- Вот как это выглядит
- спецификация составного протокола и спецификация html
- Сообщение в блоге о реализации грозного
- bop: Boyer Moore Parser, хороший модуль для определения положения границ между частями
- Еще одно сообщение в блоге о реализации многочастного парсера
Удачного кодирования.
Без них парсинг многочастных форм может быть трудно сделать правильно и эффективно. Если вы действительно не хотите проходить эту работу по анализу составных частей самостоятельно (формы urlencoded намного проще), вам действительно следует использовать один из методов connect-multiparty, multer, connect- busboy, reformed и т. Д.
Автономные парсеры, такие как busboy, можно использовать с Express.js или без него. С другой стороны, промежуточное ПО Express.js расширяет объект запроса, добавляяreq.files
что вы можете легко получить доступ к файлам. Некоторые реализации хранят промежуточные файлы либо во временном каталоге, либо в памяти. Другие позволяют получить доступ к потоку загруженного содержимого файлов, не занимая память сервера или жесткий диск.
Можно самостоятельно реализовать синтаксический анализ HTTP-запроса multipart / form-data, и это прекрасное упражнение по программированию. Однако, если время разработки, ремонтопригодность и исправление ошибок вызывают беспокойство, тогда готовые библиотеки пригодятся.
В зависимости от вашей ситуации задайте эти вопросы, чтобы определить, какая библиотека вам больше подходит.
- сохраняет промежуточные файлы нормально, или вы хотите передать файлы в потоковом режиме?
- если можно сохранить промежуточные файлы, вы бы предпочли их в памяти или на жестком диске?
Затем выберите одну из списка наиболее часто используемых библиотек обработки загрузки файлов. Дерево решений взято из статьи:
Выберите между Formidable, Busboy, Multer и Multiparty для обработки загрузки файлов.