2013-07-02 26 views
5

Tôi có luồng và tôi cần tải nội dung luồng thành chuỗi. Tôi stream từ internet bằng cách sử dụng http.get. Tôi cũng viết luồng vào tệp, nhưng tôi không muốn ghi tệp và sau đó mở cùng một tệp và đọc từ đó ... Vì vậy, tôi cần phải chuyển đổi luồng thành chuỗi Cảm ơn mọi lời khuyên ...Node.js - Cách nhận luồng vào chuỗi

+0

Bạn đang thắc mắc là quá mơ hồ. Vì vậy, bạn có muốn chuyển đổi dữ liệu đến một chuỗi, hoặc ghi nó vào đĩa? Một số mã ví dụ sẽ giúp ích. –

+2

có thể trùng lặp của [Ghi dòng node.js vào một biến chuỗi] (http://stackoverflow.com/questions/10623798/writing-node-js-stream-into-a-string-variable) –

Trả lời

1

Thay vì sử dụng các chức năng lồng nhau thứ hai, hãy thử các phương thức toString() trên dòng suối. Điều này sau đó có thể được piped bất cứ nơi nào bạn muốn nó đi, và bạn cũng có thể viết một phương thức() có thể gán nó cho một biến hoặc sử dụng nó trực tiếp trong một chức năng.

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 

Lưu ý cuối cùng - phương thức http.get() có hai tham số: url và gọi lại. Điều này đòi hỏi hai tham số, và bạn có thể đã không nhận được gì vì nó là một thông báo lỗi rỗng.

+2

Tôi nghĩ rằng điều này chỉ hoạt động ở đây vì http.get trả về luồng mở rộng, nói chung luồng có thể đọc được không có một phương thức toString hoạt động theo cách này. –

1

Vì vậy,

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   
} 

tôi đã suy nghĩ, rằng điều này sẽ làm việc, nhưng nó không

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

Thêm phần này vào đầu 'response.setEncoding ('utf8'); ' – user568109

+0

Đây không phải là câu trả lời, nó sẽ được thêm vào câu hỏi của bạn. – justrhysism

+1

Một điều chỉnh nhỏ cho trình xử lý 'kết thúc', hàm xử lý sẽ không có tham số nếu không nó sẽ chỉ in không xác định. Vì vậy, '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); 
    }); 
    }); 

Điều này hoạt động chắc chắn. Tôi đang sử dụng nó.

Các vấn đề liên quan