JavaScript отправка Buffer с фото

217
12 сентября 2018, 08:40

Для того что бы отправить фото в 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.

Может какие то ограничения еще и со стороны сервера имеются?

Answer 1

Для того чтобы конвертировать 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({ ... })
);
Answer 2

Нашел ответ вот здесь

form.append('avatar', req.file.buffer, {
  filename: req.file.originalname,
  encoding: req.file.encoding,
  mimetype: req.file.mimetype,
  size: req.file.size
});
READ ALSO
History API (scroll -> replaceState) - JavaScript

History API (scroll -> replaceState) - JavaScript

Обновил jQuery и jq-ui и теперь вижу предупреждение:

202
Google map API как получить общее время в пути

Google map API как получить общее время в пути

Подскажите кто сталкивался уже с такимРаботаю на сайте с картами Google, подключены API: Maps JavaScript API, Places API, Directions API

175
не работает добавление класса addClass

не работает добавление класса addClass

Помогите пожалуйста разобраться, почему не происходит добавление класса через addClass? Есть noUIslider, я ему через span добавил проценты ниже, при...

193
счётчик по клику

счётчик по клику

на странице стоит N количество счётчиков, при клике на + увеличивает значение на 1 или при клике на - уменьшает на 1Значение не должно быть меньше...

193