下载图像并使用 multipart/form-data 将其发送到 API

Download Image and Send it to an API using multipart/form-data

我正在尝试使用 multipart/form-data 将图像从互联网发送到 API。

我可以通过使用 request.pipe(fs.createWriteStream) 将图像保存在临时文件夹中并使用 fs.createReadStream

上传来做到这一点

但是如果不将其保存在临时文件夹中,我该如何执行此操作?

我尝试创建一个新的 request 并将正文作为 new Buffer 发送,但没有成功。

补充信息:

我正在实施 Telegram Bot API 方法 sendPhoto: https://core.telegram.org/bots/api#sendphoto

我正在使用请求模块进行集成: https://github.com/request/request

谢谢。

使用请求节点库,您 can get binary content from the resourcerequestSettings 中设置 encoding: null。所以二进制内容在内存中存储到一个对象(Buffer)中。

要使用 node-telegram-bot 发送照片,您需要:

var TelegramBot = require('node-telegram-bot-api');
var bot = new TelegramBot(token);

var requestSettings = {
    url: 'http://httpbin.org/image',
    encoding: null
};

request(requestSettings, function (error, response, buffer) {
    if (!error && response.statusCode == 200) {
        bot.sendPhoto(chatId, buffer)
    }
});

我有同样的问题,我用下一个代码解决了,使用请求承诺库

    const rp = require('request-promise');

    const req = {
        'url': 'https://store.server.com',
        'json': true,
        'resolveWithFullResponse': true
    };

    req['formData'] = {
        media: rp.get('https://videourl.com')
    };
    return rp.post(req)
        .then(response => return response)
        .catch(error => return throw error);