流式传输“请求”请求的正确方法?
Correct way to stream a `request` request?
我正在尝试从 request
创建一个 ReadableStream 对象,最终我想将它传递到 mailgun-js 的数据对象的附件变量中:
var fileStream = null;
request(String(url)).pipe(fileStream);
msg.attachment = new mailgun.Attachment({
data: fileStream,
filename: 'my_custom_name.png',
knownLength: fileStat.size,
contentType: 'image/png'});
正确的做法是什么?
未测试,但值得一试:
var stream = new require('stream').PassThrough();
request(String(url)).pipe(stream);
msg.attachment = new mailgun.Attachment({
data : stream,
filename : 'my_custom_name.png',
knownLength : fileStat.size,
contentType : 'image/png'
});
request()
好像没有继承自Stream
,所以直接传为data
属性是不行的。相反,创建了一个 PassThrough
流,它继承自 Readable
和 Writable
.
Readable
部分将由 Mailgun class 使用,Writable
部分将获取通过管道传输到其中的 HTTP 响应数据。
我知道这有点晚了,但希望仍然有用。刚刚提交了一个拉取请求以获得此功能:
var request = require('request');
var file = request("https://www.google.ca/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png");
var data = {
from: 'Excited User <me@samples.mailgun.org>',
to: 'serobnic@mail.ru',
subject: 'Hello',
text: 'Testing some Mailgun awesomness!',
attachment: file
};
mailgun.messages().send(data, function (error, body) {
console.log(body);
});
如果没有合并,你可以在这里看到:
https://github.com/antoniosou/mailgun-js
我正在尝试从 request
创建一个 ReadableStream 对象,最终我想将它传递到 mailgun-js 的数据对象的附件变量中:
var fileStream = null;
request(String(url)).pipe(fileStream);
msg.attachment = new mailgun.Attachment({
data: fileStream,
filename: 'my_custom_name.png',
knownLength: fileStat.size,
contentType: 'image/png'});
正确的做法是什么?
未测试,但值得一试:
var stream = new require('stream').PassThrough();
request(String(url)).pipe(stream);
msg.attachment = new mailgun.Attachment({
data : stream,
filename : 'my_custom_name.png',
knownLength : fileStat.size,
contentType : 'image/png'
});
request()
好像没有继承自Stream
,所以直接传为data
属性是不行的。相反,创建了一个 PassThrough
流,它继承自 Readable
和 Writable
.
Readable
部分将由 Mailgun class 使用,Writable
部分将获取通过管道传输到其中的 HTTP 响应数据。
我知道这有点晚了,但希望仍然有用。刚刚提交了一个拉取请求以获得此功能:
var request = require('request');
var file = request("https://www.google.ca/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png");
var data = {
from: 'Excited User <me@samples.mailgun.org>',
to: 'serobnic@mail.ru',
subject: 'Hello',
text: 'Testing some Mailgun awesomness!',
attachment: file
};
mailgun.messages().send(data, function (error, body) {
console.log(body);
});
如果没有合并,你可以在这里看到: https://github.com/antoniosou/mailgun-js