下载图像并使用 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 resource 在 requestSettings
中设置 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);
我正在尝试使用 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 resource 在 requestSettings
中设置 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);