Articles of zlib

gunzip使用zlib在node.js中分割TCP响应

Node.js v9.2.1 问题: 在node.js中使用内置的zlib模块时是否可以放弃标题检查? zlib在这个“标题检查”期间寻找的是什么?/我能欺骗吗? 我见过的所有例子都是使用某种types的库(http,request),它们在执行zlib之前实现了至less一些头parsing。 那么zlib实际上看起来不是什么原始的反应。 同样在这些例子中,closures连接时触发“结束”事件。 我的例子将没有这样的事件。 对于这个问题,让我们假设我正在使用一个死的简单的net.Socket与持久的TCP连接,如下所示: var net = require('net'); var chunks = []; var socket = net.connect({ port: foo, host: bar }, () => { socket.write('<perfectRequestHeaders>', null, () => { socket.on('data', (chunk) => { chunks.push(chunk); }) }) }) 然后,当我决定所有的块已经收到。 (没有“结束”事件,因为连接保持打开状态,只有当我看到终止块时,我才完全知道响应) var zlib = require('zlib'); var resBuffer = Buffer.concate(chunks); var headerEndIndex […]

压缩/ gzip /使用res.write压缩stream媒体内容

var express = require('express') var app = module.exports = express() function getImages(callback) { callback() } app .set('views', __dirname + '/views') .set('view engine', 'jade') .get('/stream/images', function(req, res) { res.render('layout', function(err, body) { res.type('html') res.write(body.replace('</body></html>', '')) getImages(function(err) { res.render('streams/images', function(err, body) { var html = '<div class="layout-stream">' + body + '</div>' res.write( "<script>$('.pagelet-layout-stream').replaceWith(" + JSON.stringify(html) + "); […]

解压缩Gzip JSON响应

我从Web服务获得GZIPtypes的压缩响应。 任何人都可以请帮助我如何解压缩或解码响应。 任何有关这方面的帮助将是非常有益的 谢谢

在Node.js中使用zlib进行解压缩会导致错误的头部错误

简而言之,我试图从我的文件系统中读取一个.zip文件,解压缩zip文件,然后用xml-stream将其与文件中的内容做一些事情。 我认为这将是相当简单的,并从这开始: var fs = require('fs') , XmlStream = require('xml-stream') , zlib = require('zlib'); //- read the file and buffer it. var path = '../path/to/some.zip'; var fileBuffer = fs.readFileSync(path, { encoding: 'utf8' }); //- use zlib to unzip it zlib.gunzip(fileBuffer, function(err, buffer) { if (!err) { console.log(buffer.toString()); } console.log(err); }); 但是这导致了一个 { [Error: incorrect header […]

C ++中的URL编码和nodejs中的解码

我正在将数据从C ++客户端传输到nodejs服务器。 我使用zlib首先压缩string,然后使用curl_easy_escape来对压缩的string进行url编码。 std::string s = zlib_compress(temp.str()); std::cout << s <<"\n"; CURL *handle = curl_easy_init(); char* o = curl_easy_escape(handle, s.data(), s.size()); std::cout << o <<"\n"; 然后我发送它使用: std::string bin(o); curl_easy_setopt(handle, CURLOPT_POSTFIELDSIZE, bin.size()); curl_easy_setopt(handle, CURLOPT_POSTFIELDS, bin.data()); curl_easy_perform(handle); 当我运行这个,我得到的输出: x??с??Ҵ4? x%DA%D3%D1%81%80%E2%92%D2%B44%1D%03%00%1BW%03%E5 现在,我收到了我的nodejs服务器上的第二个编码string。 我现在尝试解码它。 var x = req.params; for (var key in req.body) { console.log(key); var x = unescape(key); […]

随着节点的API / ZLIB越来越errno:-3,代码:'Z_DATA_ERROR'

示例数据可以在这里findallCountries.zip ,这是邮政编码数据库formsgeonames.org。 我正在运行这个代码, const zlib = require('zlib'); const fs = require('fs'); const zip = fs.readFileSync('/tmp/allCountries.zip'); zlib.gunzip(zip, unzipData => console.log(unzipData) ); 我得到这个错误, { Error: incorrect header check at Zlib._handle.onerror (zlib.js:356:17) errno: -3, code: 'Z_DATA_ERROR' } 我也试过zlib.unzip ,它返回相同的错误,并像这样zlib.unzipSync , zlib.unzip(zip, unzipData => console.log(unzipData) ); 它返回这个堆栈转储, zlib.js:536 throw error; ^ Error: incorrect header check at Zlib._handle.onerror (zlib.js:356:17) at […]

使用Node.js保存压缩的string

现在,我正在使用gzcompress压缩一些数据并将其保存到PHP文件中。 这是我的PHP代码。 我将这个压缩的string保存到一个文件,然后使用zlib从iOS打开它。 $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吗?

PHP中的node.js中的gzuncompress函数

所以我有一些使用PHP的gzcompress方法压缩的数据: http : //us2.php.net/manual/en/function.gzcompress.php 我怎样才能从node.js解码这个数据? 我已经尝试了“压缩”,“zlib”和其他几个节点压缩库,但是他们都没有重新识别这些数据。 例如,zlib只是给我“错误:不正确的标题检查” 答案:原来“zlib”是要走的路。 我们有一个来自memcache的二进制数据的问题。 如果你有一个node.js Buffer对象的二进制数据,你调用toString()而不是.toString('binary'),它会得到各种各样的东西被转义或转义序列被解释或什么。 不幸的是,我尝试过的所有memcache插件都假定从memcache获取string数据,并且没有正确处理它的规则。 我find的最好的ZLIB模块: https://github.com/kkaefer/node-zlib // first run "npm install zlib", then… var zlib = require('zlib'); var gz = zlib.deflate(new Buffer("Hello World", 'binary')); // also another 'Buffer' console.log(zlib.inflate(gz).toString('binary')); 仅供参考,这个问题是非常相似的有关Java的一个相关的问题: 在Java中的PHP的gzuncompress函数?

Node.js请求与zlib库

我试图找出一种方法,使这个图书馆工作与gzip和放气。 看着这个问题,试了一下这个build议,但由于某种原因还是不行。 我对node.js比较陌生,有人可以看看我的代码,并告诉我我做错了什么? var request = require("request"), zlib = require( 'zlib' ); var req = request( { uri: "http://google.com", headers: { 'Accept-Encoding': 'gzip, deflate', 'user-agent': 'Mozilla/5.0 (Windows NT 5.1; rv:13.0) Gecko/20100101 Firefox/13.0.1', }, }, function( error, res, body ) { var output; switch ( res.headers[ 'content-encoding' ] ) { case 'gzip': var gzip = zlib.createGunzip(); […]

用nodejsstream来压缩文件导致内存泄漏

我试图做一些看起来很简单的事情:用一个文件名为X的文件,并创build一个gzip版本为“X.gz”。 Nodejs的zlib模块没有提供方便的zlib.gzip(infile,outfile),所以我想我会使用一个inputstream,一个输出stream和一个zlib gzipper,然后pipe它们: var zlib = require("zlib"), zipper = zlib.createGzip(), fs = require("fs"); var tryThing = function(logfile) { var input = fs.createReadStream(logfile, {autoClose: true}), output = fs.createWriteStream(logfile + ".gz"); input.pipe(zipper).pipe(output); output.on("end", function() { // delete original file, it is no longer needed fs.unlink(logfile); // clear listeners zipper.removeAllListeners(); input.removeAllListeners(); }); } 然而,每次运行这个函数,Node.js的内存占用量都会增长100kb左右。 我忘了告诉溪stream,他们应该再次自杀,因为他们不再需要了吗? 或者,有没有办法只是gzip文件,而不打扰stream和pipe道? 我尝试使用“node.js gzip一个文件”的search引擎,但它只是链接到API文档,堆栈溢出问题的gzippingstream和缓冲区,而不是如何只是gzip文件。