conflux
conflux copied to clipboard
zip64 format
Write zip's as zip64 format to support larger files then 4gb
note to self:
- Mac's default archiver (and others) don't support zip64 so it would be best if each entry is only marked as zip64 when needed
- the local entry can't contain file size or any information if it is a zip32 or zip64 entry since we don't know how big it is in advance. this information needs to be written to both (zip32 & zip64) central directory at the EOF
- it would probably also be best if we avoided to write the zip64 central dir too if the zip don't get flagged as zip64
Could it be the reason why zip file downloaded on windows can't be extracted with default Extract all...
command on windows? 7zip works fine though.
possible
I started to look into this too. FYI I found this graphical overview of zip32 and zip64, which seems to make it easier to understand.
would love to see this in streamsaver or this library!
https://blog.yaakov.online/zip64-go-big-or-go-home/
Some feedback from implementing this in client-zip : the above article was helpful to some extent but not entirely appropriate for a streaming implementation. What seems to work is to
- not include the Zip64 extra field at all in the file header
- still set sizes to zero in the file header, since we're streaming
and then, if after streaming the file data you find it's bigger than 4GB, or the total current size of the stream is bigger than 4GB,
- use 64-bit sizes in the data descriptor
- write the Zip64 extra field in the central repository entry for that file
finally, if any file was larger than 4GB or the central repository offset is larger than 4G
- write the Zip64 end of central repository and its locator
The one thing I couldn't figure out is the "version needed to read" field in file header. Since we're streaming, we can't know in advance whether the file will be readable by just version 2 or at least 4.5. So I write 4.5 all the time. The ZIP readers I've tried my files on don't mind.
Was there any progress on this?
Bump ⬆️
first, thank you for the awesome library !!
has there been any progress on this ? I think this is why the native windows zip archiver can't read/extract the files.
When trying to extract the files you get this
Bump ⬆️ first, thank you for the awesome library !! has there been any progress on this ? I think this is why the native windows zip archiver can't read/extract the files. When trying to extract the files you get this
Never mind, it's just a stupid mistake on my side, I was prepending /
to the file name and that doesn't work with the native archive utility of windows and macos