2017-08-04 35 views
1

現在,我使用gzcompress來壓縮一些數據並將其保存到PHP文件中。這是我的PHP代碼。我將這個壓縮的字符串保存到一個文件中,然後使用zlib從iOS打開它。使用Node.js保存壓縮的字符串

$compressed_text = gzcompress($text, 9); 

我想用Node.js在JavaScript中做同樣的事情,但我無法讓它工作。這是我在Javascript中試圖做的。

var input = new Buffer(text); 
zlib.deflate(input, function(error, output) { 
    var compressed_text = output.toString('ascii'); 
}); 

它無法使用Node.js從iOS解壓縮這些數據。它適用於PHP,但我無法讓它在Node.js中工作。我應該使用不同的方法而不是deflate

+0

我最好的猜測是這是一個編碼問題。如果我只運行'zlib.deflateSync(input).toString()'(字符串編碼默認爲'utf-8'),那麼輸出看起來與PHP相同。所以我會嘗試或更改iOS端的編碼 – zinfandel

回答

1

zlib輸出是二進制的,所以你需要一些保留字節的方式。在節點中,最簡單的方法是將其保存爲Buffer。既然你提到將它保存到一個文件中,你可以這樣做:

fs.writeFile(path, output, (err) => { 
    if (err) throw err; 
    console.log('Wrote data to disk'); 
});