2016-01-23 36 views
0

我想從zip文件中的文件讀取數據,並將這些數據以較小的塊張貼到服務器。由於該文件非常大,我想在node.js中使用流。在node.js上執行一些操作,然後傳遞

我知道它使用yauzl從zip和readline閱讀,所以我不必自己照顧行結尾(這是一個CSV文件)。但仍然存在一個問題:zip文件中的數據編碼爲LATIN1,我需要將其發佈爲UTF8。隨着iconv-lite的幫助下,我可以readablestream正確地轉換爲UTF8在控制檯上:

rd.on('data', function(data) { 
    console.log(iconv.decodeStream(data, 'LATIN1')); 
}); 

現在我的問題是,我想用readLine其預計如下配置:

var rd = readline.createInterface({ 
    input: readStream, 
    output: process.stdout, 
    terminal: false 
}); 

所以我的想法將decodeStreamencodeStream結合起來,這樣我就可以再次得到一個數據流,並且可以通過正確編碼的UTF8將其傳送到readline

readStream.pipe(iconv.decodeStream('LATIN1').pipe(iconv.encodeStream('utf8')) 

,但我看不出我既可以在readline配置使用或在一個變量,我可以給readlineìnput「結束」的管道。

回答

1

我是如此接近,解決辦法很簡單:

 var rd = readline.createInterface({ 
      input: readStream.pipe(iconv.decodeStream('LATIN1')).pipe(iconv.encodeStream('utf8')), 
      output: process.stdout, 
      terminal: false 
     }); 
相關問題