使用 Nodejs Stream post 一条带有远程图像的推文的效率如何?
How efficiently post a tweet with a remote image with Nodejs Stream?
我需要下载一个远程图片,它的路径保存在wineTweet.label
属性中。
然后 POST 一条带有这张图片的推文。
我的实现工作正常,但我先将图像保存到文件,然后在发布之前读取它。
这是代码:
var file = fs.createWriteStream("file.jpg");
https.get(wineTweet.label, function (response) {
response.pipe(file);
file.on('finish', function () {
var data = require('fs').readFileSync('file.jpg');
// Make post request on media endpoint. Pass file data as media parameter
client.post('media/upload', {media: data}, function (error, media, response) {
if (!error) {
// If successful, a media object will be returned. // Lets tweet it
var status = {
status : 'I am a tweet',
media_ids: media.media_id_string // Pass the media id string
}
client.post('statuses/update', status, function (error, tweet, response) {
if (!error) {
console.log(tweet);
});
}
});
});
});
如何将 ReadingStream 直接连接到 POST 请求?
直接使用response
就可以了,它已经是一个可读流了,而不是writing/reading一个临时文件:
https.get(wineTweet.label, function(res) {
// Make post request on media endpoint. Pass file data as media parameter
client.post('media/upload', {media: res}, function(error, media, response) {
if (!error) {
// If successful, a media object will be returned. // Lets tweet it
var status = {
status : 'I am a tweet',
media_ids: media.media_id_string // Pass the media id string
};
client.post('statuses/update', status, function(error, tweet, response) {
if (!error)
console.log(tweet);
});
}
});
});
顺便提一句,您应该适当地处理错误而不是忽略它们。
我需要下载一个远程图片,它的路径保存在wineTweet.label
属性中。
然后 POST 一条带有这张图片的推文。
我的实现工作正常,但我先将图像保存到文件,然后在发布之前读取它。
这是代码:
var file = fs.createWriteStream("file.jpg");
https.get(wineTweet.label, function (response) {
response.pipe(file);
file.on('finish', function () {
var data = require('fs').readFileSync('file.jpg');
// Make post request on media endpoint. Pass file data as media parameter
client.post('media/upload', {media: data}, function (error, media, response) {
if (!error) {
// If successful, a media object will be returned. // Lets tweet it
var status = {
status : 'I am a tweet',
media_ids: media.media_id_string // Pass the media id string
}
client.post('statuses/update', status, function (error, tweet, response) {
if (!error) {
console.log(tweet);
});
}
});
});
});
如何将 ReadingStream 直接连接到 POST 请求?
直接使用response
就可以了,它已经是一个可读流了,而不是writing/reading一个临时文件:
https.get(wineTweet.label, function(res) {
// Make post request on media endpoint. Pass file data as media parameter
client.post('media/upload', {media: res}, function(error, media, response) {
if (!error) {
// If successful, a media object will be returned. // Lets tweet it
var status = {
status : 'I am a tweet',
media_ids: media.media_id_string // Pass the media id string
};
client.post('statuses/update', status, function(error, tweet, response) {
if (!error)
console.log(tweet);
});
}
});
});
顺便提一句,您应该适当地处理错误而不是忽略它们。