2013-07-02 69 views
5

我有流,我需要將流內容轉換爲字符串。我使用http.get從Internet進行流式傳輸。我也寫流到文件,但我不想寫文件,然後打開相同的文件,並從它讀取... 所以我需要將流轉換爲字符串 感謝您的所有建議...Node.js - 如何獲取流到字符串

+0

你的問題太模糊了。那麼你想將傳入的數據轉換爲字符串還是將其寫入磁盤?一些示例代碼會有所幫助。 –

+2

[將node.js流寫入字符串變量]可能的重複(http://stackoverflow.com/questions/10623798/writing-node-js-stream-into-a-string-variable) –

回答

1

。然後可以將它傳送到任何你想要的地方,你也可以編寫一個可以將它分配給一個變量或直接在一個函數中使用的through()方法。

var http = require('http'); 

var string = ''; 
var request = http.get('http://www.google.cz', function (err, data){ 
    if (err) console.log(err); 
    string = data.toString(); 
    //any other code you may want 
}); 
//anything else 

最後一個註釋 - http.get()方法帶有兩個參數:url和一個回調函數。這需要兩個參數,並且您可能沒有收到任何內容,因爲這是一個空的錯誤消息。

+2

我認爲這隻適用於這裏,因爲http.get返回一個擴展流,一般來說可讀流不會有這樣的toString方法。 –

1

所以,

I have this: 
var centent = ''; 
var adress = "http://www.google.cz"; 
var request = http.get(adress.trim(), function(response) {  
     //I need to get content of http stream into variable content and after that continue   
} 

我在想,這會工作,但它確實不是使用第二嵌套函數,嘗試流的toString()方法的不

var http = require('http'); 

var string = ''; 
var request = http.get("http://www.google.cz", function(response) {  
    response.on('data', function(response){ 
     string += response; 

    }); 
    response.on('end', function(string){ 
     console.log(string); 
    }); 
    }); 
+0

在開始時添加'response.setEncoding('utf8');' – user568109

+0

這不是一個答案,它應該被添加到你的問題。 – justrhysism

+1

處理函數的'end'處理程序的一個小修正應該沒有參數,否則它只會打印undefined。所以,'response.on('end',function(){console.log(string); });' – mihaic

0
var http = require('http'); 

var string = ''; 
var request = http.get("http://www.google.cz", function(response) {  
    response.on('data', function(response){ 
     string += response.toString(); 

    }); 
    response.on('end', function(string){ 
     console.log(string); 
    }); 
    }); 

這是有效的。我正在使用它。