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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了下载图像并使用multipart / form-data将其发送到API相关的知识,希望对你有一定的参考价值。

我正在尝试使用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中设置encoding: null。因此二进制内容存储在一个对象(Buffer)中。

要使用requestSettings发送照片,您将执行以下操作:

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)
    }
});

以上是关于下载图像并使用multipart / form-data将其发送到API的主要内容,如果未能解决你的问题,请参考以下文章

下载然后上传图像而不存储它

使用 JQuery AJAX 发送包含文件和附加 json 表单数据的 multipart/form-data

h5中formdata怎么添加file

怎么样使用Python发送form-data请求及拼接内容

node-读取图片,content-type如何设置

Jmeter之上传文件