Comments (11)
Thanks for your help :
var binData = new Uint8Array(e.target.response);
var oPako = new pako.Inflate();
for (var i = 0; i < binData.length; i += 16384) {
if((i + 16384) >= binData.length){
oPako.push(binData.subarray(i, i + 16384), true);
} else {
oPako.push(binData.subarray(i, i + 16384), false);
}
}
if (oPako.err) {
throw new Error(oPako.err);
}
from pako.
All you need is to override default onData
/ onEnd
handlers
https://github.com/nodeca/pako/blob/master/lib/deflate.js#L254
When slice input to chunks and send those with push()
Also, you can make wrapper to run pako in webworker when possible.
from pako.
Ah, even more simple - send input data bu chunks with push and update progress bar after each.
http://nodeca.github.io/pako/#Deflate.prototype.push
from pako.
Hi @puzrin, I'm interested by creating a progress bar when deflating a GZip file :
I can increment the number of chunks. But how can i have the number of chunks before deflating.
var binData = new Uint8Array(e.target.response);
var oPako = new pako.Inflate();
console.log("ungzip > binData.length", binData.length);
var iNumberChunks = 0;
oPako.onData = function(chunk){
iNumberChunks += 1;
// parent.onData()
this.chunks.push(chunk);
};
oPako.push(binData, true);
if (oPako.err) {
throw new Error(oPako.err);
}
console.log("ungzip > iNumberChunks", iNumberChunks);
var uInt8Array = new Uint8Array(oPako.result);
from pako.
Not sure that understand your question. Only you can decide how to split your data to chunks, how to push those to deftator instance and what to do between.
from pako.
Ah, if you asked about output chunks - you can't predict it, because it depends on content. You can only set chunk size (but i don't recomment to vary), and new chunk will be generated each time when buffer filled. Or when you finish (last data will be flushed)
from pako.
@puzrin I try to have in my onData a percent of the deflating operation. So I must to have a number of chunks current and a number of chunks total for calculating the percent. Is it possible to estimate the size of buffer ?
Link : http://www.abeel.be/content/determine-uncompressed-size-gzip-file
from pako.
@puzrin If I take the 4 last bytes, I can have the filesize before unzipping. How can I access to them ? Thanks for advance
from pako.
You try to use wrong approach. Bind progress bar on input chunks, not on output chunks. Input size is known, split it as you wish, and calculate percent after each chunk push. If you push input data with one big peace, deftator/inflator will slice it anyway, but you will not have progress info.
from pako.
Yes. Just fix condition when last chunk size is exactly 16384. In your code it will be pushed with fasle
from pako.
Ups, sorry, seems there are no mistake,
from pako.
Related Issues (20)
- "Error: -3" when inflating chunks of data HOT 2
- How to decompress blob? HOT 2
- Deflate() creating broken zip file
- Use classes to improve tree-shaking HOT 8
- No way to read Deflate data in chunks. HOT 4
- CI: set minimal permissions on GitHub Workflow HOT 2
- Cannot install pako HOT 1
- library initialization slowing down app start
- TypeError: input.subarray is not a function HOT 1
- Docs update: mention what `inflate` and `deflate` actually return
- Incorrect JSDoc type information for optional parameters
- Expecting a new version release HOT 1
- Different 10th byte gzip header between zlib and pako on Mac OS 13 HOT 1
- License declaration in package.json and LICENSE are not the same
- GZIP pako compressed string results in "Not in GZIP format" in JAVA on decompressing HOT 1
- Inconsistency and `undefined` return in `inflate` method between versions v1 and v2
- Using static dictionary, inflateRaw "Uncaught invalid stored block lengths"
- how to gzip multiple files? HOT 1
- Not compatible with Angular v17
- Getting corrupted data on decompressing HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pako.