後台返回的數據是gzip 加密過的,需要解壓數據,如下圖所示:
我們需要上圖標出來的加密數據進行解密出來
1 安裝 :
2 使用
Ⅱ 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);
}
});
Ⅲ [油猴腳本開發指南]JSZIP庫壓縮解壓文件
JSZip庫是前端實現文件壓縮與解壓的強大工具。通過創建JSZip實例,我們可以管理一組文件,進行添加、刪除、修改操作。
實例化JSZip後,添加或更新文件及文件夾變得簡單直接。file函數與folder函數提供方便的鏈式調用,允許在目錄結構中組織文件。添加至目錄的文件,實質上也存在於JSZip實例中。
使用file方法可訪問文件內容,而刪除文件或文件夾則可通過特定命令實現。生成zip文件時,使用generateAsync方法,注意生成的並非真實文件,而是一種內存表示。
載入Zip文件則需調用loadAsync方法,並確保使用二進制下載文件後進行解壓。值得注意的是,JSZip在功能上有一定局限性,不支持加密zip、多卷zip,且僅支持UTF8編碼,輸出與輸入zip可能不完全相同。
Ⅳ 純js遠程下載zip,實現自動解壓到js所在的當前目錄
這代碼做起來不難,唯一的、但又能讓你絕望的問題是:任何瀏覽器都不會允許這樣的js腳本代碼運行的,這屬於最嚴重的安全隱患問題,試想想,世界上的任何一個人,只要打開某個網頁,自己的電腦上就會自動被下載一個zip文件並自動解壓,然後裡面的說不定是什麼的東西就為所欲為了,哇,世界末日的感覺啊……
對了,其實這波操作就是早期網路木馬所採用的,現在各大瀏覽器早就已經把這漏洞補上了。