2013-07-02 28 views
5

Mam strumień i muszę pobrać zawartość strumienia do łańcucha. Przesyłam strumień z Internetu za pomocą http.get. Piszę również strumień do pliku, ale nie chcę pisać pliku, a po tym otwierać ten sam plik i czytać z niego ... Więc muszę przekonwertować strumień na ciąg Dzięki za wszystkie porady ...Node.js - Jak uzyskać strumień do ciągu znaków

+0

Twoje pytanie jest zbyt nieprecyzyjne. Więc chcesz przekonwertować przychodzące dane na ciąg lub zapisać go na dysku? Przykładowy kod może pomóc. –

+2

możliwy duplikat [Pisanie strumienia node.js do zmiennej łańcuchowej] (http://stackoverflow.com/questions/10623798/writing-node-js-stream-int-a-tring-variable) –

Odpowiedz

1

Zamiast drugiej funkcji zagnieżdżonych, spróbować metody toString() w strumieniu. Można go następnie wyprowadzić w dowolne miejsce, a także napisać metodę through(), która może przypisać ją do zmiennej lub użyć bezpośrednio w tej funkcji.

Ostatnia uwaga - metoda http.get() pobiera dwa parametry: adres URL i wywołanie zwrotne. Wymaga to dwóch parametrów i prawdopodobnie nic nie dostałeś, ponieważ był to pusty komunikat o błędzie.

+2

Myślę, że to działa tylko dlatego, że http.get zwraca strumień rozszerzony, ogólnie Czytelne strumienie nie mieć metodę toString, która działa w ten sposób. –

1

Więc

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   
} 

Myślałam, że to będzie działać, ale nie

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

Dodaj to na początku 'response.setEncoding ('utf8');' – user568109

+0

To nie jest odpowiedź, należy ją dodać do pytania. – justrhysism

+1

Niewielka korekta funkcji obsługi "końca" funkcji obsługi nie powinna zawierać żadnego parametru, w przeciwnym razie wydrukuje się niezdefiniowana. Tak więc, '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); 
    }); 
    }); 

To działa na pewno. Używam tego.