Tag: zlib

在节点zlib中设置压缩级别

如何强制zlib使用压缩级别9. https://nodejs.org/dist/latest/docs/api/zlib.html 我需要设置这个自浏览器端解压缩文件的base64编码的string在级别9压缩。http://jsxgraph.uni-bayreuth.de/wp/jsxcompressor.html

错误:运行post时不正确的标题检查

我需要从rest电话(用于模拟我使用邮递员与二进制选项的邮件,并添加一个文件夹和HTML文件的一个小zip文件),在模拟过程中我想要获取数据与快递和提取zip并放在C盘下的一些文件夹。 目前,当我运行下面的程序(这是我试过的所有代码),但即时通讯错误 events.js:85扔呃; //未处理的错误事件^错误:在Zlib._handle.onerror(zlib.js:366:17) var express = require('express'), fs = require('fs'), zlib = require('zlib'), app = express(); app.post('/', function (req, res) { var writeStream = fs.createWriteStream('C://myFolder', {flags: 'w'}); req.pipe(zlib.createInflate()).pipe(writeStream); }); var server = app.listen(3000, function () { console.log("Running on port" + 3000) } ) 在邮差头我已经添加了以下内容 content-Type —-> application/zip 我应该如何克服这个问题,并保存压缩? 还有其他推荐(zlib)库来获取提取和保存压缩?

Node.js:从s3下载文件并将其解压缩为一个string

我正在编写一个AWS Lambda函数,需要从AWS S3下载文件,解压缩文件并以string的forms返回内容。 我正在尝试这个 function getObject(key){ var params = { Bucket: "my-bucket", Key: key } return new Promise(function (resolve, reject){ s3.getObject(params, function (err, data){ if(err){ reject(err); } resolve(zlib.unzipSync(data.Body)) }) }) } 但是得到错误 Error: incorrect header check at Zlib._handle.onerror (zlib.js:363:17) at Unzip.Zlib._processChunk (zlib.js:524:30) at zlibBufferSync (zlib.js:239:17) 数据看起来像这样 { AcceptRanges: 'bytes', LastModified: 'Wed, 16 Mar 2016 04:47:10 […]

如何在nodejs中gunzipstream?

我试图完成一个相当简单的任务,但我有点困惑,并陷入在nodejs中使用zlib。 我正在构build的function,包括我从aws S3下载文件gziped,解压缩并逐行阅读。 我想完成所有这些使用stream,因为我相信在nodejs中可以这样做。 这是我目前的代码库: //downloading zipped file from aws s3: //params are configured correctly to access my aws s3 bucket and file s3.getObject(params, function(err, data) { if (err) { console.log(err); } else { //trying to unzip received stream: //data.Body is a buffer from s3 zlib.gunzip(data.Body, function(err, unzippedStream) { if (err) { console.log(err); } else […]

通过Amazon SQS将压缩文本从PHP发送到NodeJS

我似乎被卡在通过Amazon SQS将压缩的消息从PHP发送到NodeJS。 在PHP方面我有: $SQS->sendMessage(Array( 'QueueUrl' => $queueUrl, 'MessageBody' => 'article', 'MessageAttributes' => Array( 'json' => Array( 'BinaryValue' => bzcompress(json_encode(Array('type'=>'article','data'=>$vijest))), 'DataType' => 'Binary' ) ) )); 注1:我也尝试将压缩数据直接放在消息中,但是库给了我一些错误,包含一些无效的字节数据 在节点方面,我有: body = decodeBzip(message.MessageAttributes.json.BinaryValue); 其中消息来自sqs.receiveMessage()调用,并且该部分工作,因为它为原始(未压缩的消息) 我得到的是TypeError:不正确的格式 我也试过使用: PHP – 节点 gzcompress() – zlib.inflateraw() gzdeflate() – zlib.inflate() gzencode() – zlib.gunzip() 而每一对都给了我他们的版本相同的错误(本质上,input数据是错误的) 鉴于所有我开始怀疑在消息传输的某个地方的错误 我究竟做错了什么? 编辑1 :似乎错误是在传输中的某处,因为PHP中的bin2hex()和.toString('hex')在节点返回完全不同的值。 似乎PHP中的Amazon SQS API使用base64传输BinaryAttribute,但Node无法对其进行解码。 我设法通过closures在amazon awsconfiguration文件中的自动转换,然后在节点中手动解码base64,但它仍然无法解码它部分解码。 […]

带有压缩的Node.JS http服务器 – 发送variables作为响应

对不起模糊的问题..但我不确定问题是什么。 我有一个节点http服务器,我正在使用JSON数据提供给一个Web应用程序。 它工作的很好,但我的JSONstring开始变大(10-12 MB),所以我想用zlib添加压缩。 JSON数据是在一个stringvariables,我想压缩,然后写入响应对象…但返回到客户端的结果似乎总是有完美的标题,没有内容。 这是我的deliverResponse函数: var deliverResult = function (data, response, callback, acceptEncoding){ var payload = callback + '(' + JSON.stringify(data) + ');'; if (acceptEncoding.match(/\bdeflate\b/)) { response.writeHead(200, { 'Content-Encoding': 'deflate', 'Content-Type': 'text/javascript; charset=UTF-8' }); zlib.deflate(payload, function(err, result){ if(!err){ //console.log(result.toString('utf8')); // I have data on the console here response.write(result.toString('utf8')); // No data sent here } […]

HTTP – 如何发送多个预caching的gzip块?

可以说我有2个单独的gziped html块在内存中。 我可以发送chunk1 + chunk2到HTTP客户端吗? 任何浏览器是否支持这个? 或者没有办法做到这一点,我不得不gzip整个stream不个别块? 我想服务于客户端为例如chunk1 + chunk2和chunk2 + chunk1等(不同的顺序),但我不想压缩整个页面,我不想caching整个页面。 我想使用预压缩的caching块并发送它们。 nodejs代码(节点v0.10.7): // creating pre cached data buffers var zlib = require('zlib'); var chunk1, chunk2; zlib.gzip(new Buffer('test1'), function(err, data){ chunk1 = data; }); zlib.gzip(new Buffer('test2'), function(err, data){ chunk2 = data; }); var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain', 'Content-Encoding': […]

如何获取node.js zlib gunzippipe道工作?

我有一个大的.gz文件(大概大约100Mb),但是,当我使用下面的代码处理文件时,输出的文件只有256k。 var fs = require('fs'), zlib = require('zlib'); var inp1 = fs.createReadStream('feed.xml.gz'); var out1 = fs.createWriteStream('feed.xml'); inp1.pipe(zlib.createGunzip()).pipe(out1); 问题似乎与zlib.createGunzip()pipe道。 有没有办法来解决这个问题? 我试图从互联网上直接stream式传输。

Node.js / Javascript等同于Java的Deflater类

我有一个使用Inflater的Java后端。 我希望通过Node.js将数据提供给它。 是否有任何相当于Deflater类? 编辑:我应该澄清一点。 我已经尝试使用https://github.com/dankogai/js-deflate ,然后base64编码的结果,并将其传递给一个非常简单的Java程序,base64解码它,并试图夸大它(创build一个简单的后台仿真) ,但我不断得到一个例外: java.util.zip.DataFormatException: unknown compression method at java.util.zip.Inflater.inflateBytes(Native Method) at java.util.zip.Inflater.inflate(Unknown Source) at java.util.zip.Inflater.inflate(Unknown Source) 而且我知道Base64编码过程在两端都能正常工作。 我也应该注意到,我不能改变Java后端。

逐行读取gzipstream

我有一个压缩的gzip文件,我想逐行阅读。 var fs = require('fs') var zlib = require('zlib') var gunzip = zlib.createGunzip() var inp = fs.createReadStream('test.gz') var n = 0 var lineProcessing = function (err, data) { if (!err) { n += 1 console.log ("line: " + n) console.log (data.toString()) } } inp .on('data', function (chunk) { zlib.gunzip (chunk, lineProcessing) }) .on('end', function () […]