2015-06-02 126 views
1

我已经实现了node.js服务器应用程序,该应用程序接受来自客户端(长json字符串)的发布数据。有没有一种方法可以在浏览器结束后将gzip数据解压缩并将其解压缩到node.js中?如何为node.js服务器gzip http请求发布(客户端)数据

我特别想要gzip请求而不是响应。

+0

https://stuk.github.io/jszip/ –

+0

它将如何在node.js中进行解压?此外,jszip用于压缩文件,我想压缩发布数据(JSON字符串,而不是文件) – Jess

+0

nodejs unzip:https://nodejs.org/api/zlib.html –

回答

0

你可以试试这个:https://github.com/sapienlab/jsonpack

示例客户端代码:

<script src="jsonpack.js" /> 
<script> 
var BIG_JSON = {.....}; 
var packed = jsonpack.pack(BIG_JSON); 
$.post('path_to_server',packed); 
</script> 

示例代码的NodeJS:

var jsonpack = require('jsonpack/main'); 
app.on('/packed_data',function(req,res){ 
    try{ 
    jsonpack.unpack(req.data); 
    }catch(e){ 
    //not good packed data. 
} 

}) 

当然,这是一个示例代码,我不知道是什么框架或者你使用的库,但你可以看到如何实现。 无论如何要小心,因为压缩和解压缩数据总是一个沉重的CPU约束任务。如果你有数兆字节的数据你不想让你的用户从手机,平板电脑等。使这项任务!

0

检查https://jsfiddle.net/gynz82tg/ 在获得base64编码的请求字符串后,在nodejs中进行解压缩。

var jsonStr = JSON.stringify({ 
 
    name: "JiangYD" 
 
}) 
 
$('#origin').text(jsonStr); 
 
var zip = new JSZip(); 
 
zip.file("data", jsonStr); 
 
var content = zip.generate(); 
 
$('#compressed').text(content); 
 

 
zip = new JSZip(content, {base64:true}); 
 
$('#decompressed').text(zip.file("data").asText());
<script src="https://raw.githubusercontent.com/Stuk/jszip/master/dist/jszip.js"></script> 
 
<div id='origin'></div> 
 
<div id='compressed'></div> 
 
<div id='decompressed'></div>

相关问题