nodejs解壓
Ⅰ 為什麼nodejs 使用zlib解壓文件出現錯誤
安裝nodeJs流程:1、下載nodejs引擎,32bitversion或者64bitversion2、下載最新版的npm zip格式壓縮包:3、在硬碟某個位置,如D盤下建立一個文件nodejs,把上面兩個下載的東西都放在這里,npm要解壓。4、配置兩個環境變數:一個是PATH上增加node.exe的目錄D:\\nodejs,一個是增加環境變數NODE_PATH,值為D:\\nodejs\\node_moles。5、win7環境配置在系統》高級系統設置》高級》環境變數》系統變數中查找PATH,編輯加上D:\\nodejs,再加上NODE_PATH變數和值。6、安裝express:打開cmd命令行,使用命令行定位到這Node目錄下,鍵入指令npminstallexpress[安裝express至相對路徑]或npminstallexpress-g[安裝express至絕對路徑]到這里,你在命令行裡面輸入node-v如果輸出nodejs的版本則安裝成功。更新nodejs的版本可以在命令行中輸入: npmupdatenpm-g
Ⅱ nodejs zlib 怎麼把幾個壓縮過的文件解壓拼接
我請求管用所結束httpvar http = require("http"),
zlib = require("zlib");
function getGzipped(url, callback) {
// buffer to store the streamed decompression
var buffer = [];
http.get(url, function(res) {
// pipe the response into the gunzip to decompress
var gunzip = zlib.createGunzip();
res.pipe(gunzip);
gunzip.on('data', function(data) {
// decompression chunk ready, add it to the buffer
buffer.push(data.toString())
}).on("end", function() {
// response and decompression complete, join the buffer and return
callback(null, buffer.join(""));
}).on("error", function(e) {
callback(e);
})
}).on('error', function(e) {
callback(e)
});
}
getGzipped(url, function(err, data) {
console.log(data);
});
2. 嘗試添加encoding: null給傳遞給選項request避免載體轉換字元串並保持二進制緩沖區
3. 工作示例(使用節點請求模塊)gunzips響應function gunzipJSON(response){
var gunzip = zlib.createGunzip();
var json = "";
gunzip.on('data', function(data){
json += data.toString();
});
gunzip.on('end', function(){
parseJSON(json);
});
response.pipe(gunzip);
}
全碼:
4. 像@Iftah說設置encoding: null 完整例(少錯誤處理):request = require('request');
zlib = require('zlib');
request(url, {encoding: null}, function(err, response, body){
if(response.headers['content-encoding'] == 'gzip'){
zlib.gunzip(body, function(err, dezipped) {
callback(dezipped.toString());
}
} else {
callback(body);
}
});