@crazzzyFrog

Как реализовать отправку изображения в телеграм не сохраняя его локально?

Всем привет! Я новичок в Node.Js. Как я могу загрузить фото с помощью метода /sendphoto? На сервере я принимаю изображение из браузера клиента с помощью "express-fileupload". Как я могу отправить фото не сохраняя его локально?
Вот пример кода.
function bufferToStream(myBuffer) {
    let stream = new Duplex();
    stream.push(myBuffer);
    stream.push(null);
    return stream;
}

router.post('/', (req, res) => {
    const fileBuffer = req.files.file.data;
    const mimetype = req.files.file.mimetype;

// Формирую тело запроса
    let body = boundaryMiddle+'Content-Disposition: form-data; name="chat_id"'+'\r\n\r\n'+ chat_id+'\r\n'+boundaryMiddle+'Content-Disposition: form-data; name="photo"; filename="blob"'+'\r\n'+'Content-Type: '+mimetype+'\r\n\r\n'+ bufferToStream(fileBuffer) +'\r\n'+boundaryLast;

    var options = {
        host: 'api.telegram.org',
        path: `/bot${token}/sendPhoto`,
        port: '443',
        method: 'POST',
        headers:{
            'Content-Type': `multipart/form-data; boundary=${boundary}`
        }
    };

    callback = function (response) {
        var str = ''
        response.on('data', function (chunk) {
            str += chunk;
        });

        response.on('end', function () {
            console.log(str);
        });
    }

    var request = https.request(options, callback);
    request.end(body);

В ответ на запрос получаю: {"ok":false,"error_code":400,"description":"Bad Request: IMAGE_PROCESS_FAILED"}.
На самом деле я думаю ошибка из-за того, что я не указываю заголовок Content-Length. Но я не знаю как указать длину потока?
Подскажите в каком направлении копать?
  • Вопрос задан
  • 636 просмотров
Пригласить эксперта
Ответы на вопрос 1
Alexandroppolus
@Alexandroppolus
кодир
Использовать https://www.npmjs.com/package/form-data для отправки формы multipart/form-data
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы