Как послать произвольный файл POST запросом на голом NodeJS?
Есть NodeJS, не самой последней версии. Нельзя устанавливать дополнительные пакеты (npm install), надо обойтись встроенными. Из встроенных для решения задачи есть лишь http и устаревший request. Надо послать большой файл произвольного содержания POST запросом. Поскольку содержание произвольное, то тип контента multipart/form-data. Пробовал писать http-клиента с применением обоих модулей - оба отправляют файл, но оба не правильные. Wireshark показал, что они посылают файл без boundary. Искал, но не нашёл примеры кода на одном из этих модулей, где бы формировался правильный запрос, который включал boundary и мог корректно отослать большой произвольный файл
Дополнительно:
Вы же не предоставили никакой информации, и ждете ответа. Ни версию нода, ни версию библиотек, ни примера кода.
Поскольку содержание произвольное, то тип контента multipart/form-data.
Здесь противоречие.
Если содержание произвольное, то тип контента тоже произвольный.
Boundary разработчик определяет произвольным образом сам и отправляет при каждом запросе
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для отправки произвольного файл POST запросом на голом NodeJS вам потребуется использовать модуль `http` или `https` в зависимости от протокола вашего запроса.
Вот пример кода, который отправляет POST запрос с файлом на сервер:
```html
const fs = require('fs'); const http = require('http'); const file = fs.readFileSync('path/to/file.txt'); const options = { hostname: 'yourserver.com', port: 80, path: '/upload', method: 'POST', headers: { 'Content-Type': 'application/octet-stream', 'Content-Length': file.length } }; const req = http.request(options, (res) => { let data = ''; res.on('data', (chunk) => { data += chunk; }); res.on('end', () => { console.log(data); }); }); req.write(file); req.end();
```
В этом примере мы считываем файл `file.txt` с помощью модуля `fs`, затем создаем объект `options`, содержащий информацию о сервере, пути и методе запроса. В заголовках указываем тип контента и длину файла.
Далее создаем запрос с помощью `http.request`, передаем в него данные файла с помощью `req.write(file)` и отправляем запрос с помощью `req.end()`. После этого мы обрабатываем ответ сервера, собирая данные в переменную `data` и выводим их в консоль.
Не забудьте заменить `yourserver.com` на адрес вашего сервера и указать правильный путь к файлу, который вы хотите отправить.