Простой вариант, все тело запроса есть файл:
На клиенте реализуется через FileApi + Ajax
На сервере просто делаем request.pipe(fileWriteStream) естественно предварительно открыв поток в нужный файл
Вариант чуть сложнее, тело в multipart формате:
устанавливаем с npm
https://www.npmjs.com/package/multiparty
при запросе:
1. создаем парсер формы
https://www.npmjs.com/package/multiparty#multipartyform
2. подписываемся на событие файл и в нем делаем pipe в файлстрим
https://www.npmjs.com/package/multiparty#file-name-file
3. отдаем запрос на парсинг
https://www.npmjs.com/package/multiparty#formparse...
пункт 2 можно опустить, если нас устраивает чтоб все файлы летели в одну папку, достаточно отдать опцию uploadDir на шаге 1