Для того что бы отправить фото в node-js я использую вот этот код:
...
request.post({
url: 'https://host.net',
data: {
note: 'Photo',
file: fs.createReadStream('path/to/b101.jpg'),
filename: 't100.jpg',
},
}, function(error, response, body) {
console.log("BODY: " + body);
console.log("RESPONSE: " + JSON.stringify(response) );
});
...
Но у меня очень часто случается что фото находятся в буффере, без локального хранения, вида:
var photoBuffer = Buffer.from([255,216,255,224,0,16,74,70,73,70,0,1,1,0,0,1,0,1,0,0,255,254,0,59,67,82,69,65,84 ...]);
Как мне переконвертировать Buffer-to-Stream и отправить этот стрим или просто буфер на сервер?
В данный момент у меня получается либо пустой стрим либо еррор еще до оправки. В случае с пустым стримом, я вижу что мсдж доходит до сервера, тк. в респонсе код=200.
Может какие то ограничения еще и со стороны сервера имеются?
Для того чтобы конвертировать Buffer в Stream есть несколько способов, один из них это использование готовых пакетов типа buffer-to-stream, второй - использование нативного stream пакета.
const { Readable } = require('stream');
// Ваш буфер
const buffer = Buffer.from([255,216,255,224,0,16,74,70,73,70,0,1,1,0,0,1,0,1,0,0,255,254,0,59,67,82,69,65,84...]);
const readable = new Readable();
readable.push(buffer);
readable.push(null); // Конец записи данных
readable.pipe(
request.post({ ... })
);
Нашел ответ вот здесь
form.append('avatar', req.file.buffer, {
filename: req.file.originalname,
encoding: req.file.encoding,
mimetype: req.file.mimetype,
size: req.file.size
});
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости