Req #41456 [Asn->Opn]: Cannot decompress newly added files
Edit report at https://bugs.php.net/bug.php?id=41456&edit=1
ID: 41456
Updated by: kalle@php.net
Reported by: sander dot marechal at tribal dot nl
Summary: Cannot decompress newly added files
-Status: Assigned
+Status: Open
Type: Feature/Change Request
Package: Zip Related
Operating System: Linux
PHP Version: 5.2.2
-Assigned To: pajoye
+Assigned To:
Block user comment: N
Private report: N
Previous Comments:
------------------------------------------------------------------------
[2016-03-19 02:34:29] david dot proweb at gmail dot com
@pajoye Do you have some solution to this case? Seems simple just return the content stored on
memory. Thanks!
------------------------------------------------------------------------
[2007-05-24 09:07:02] pajoye@php.net
"Alternatively, would it be possible to add a ZipArchive::flush() method which applies all
pending operations, so I can safely read from it afterwards?"
A flush method is in my todo, that's why I changed this bug status to a feature request :)
"I don't have the filename around but just the ZipArchive instance."
I realize that the filename propriety does not always work. It should contain the filename of the
Zip archive (not sure when it changed, more about this problem later). But it is what you may use as
a temporary solution.
------------------------------------------------------------------------
[2007-05-24 07:30:25] sander dot marechal at tribal dot nl
In that case, can't ZipArchive detect I'm trying to read a file that has pending
operations and read from it's internal cache instead of from the file?
Alternatively, would it be possible to add a ZipArchive::flush() method which applies all pending
operations, so I can safely read from it afterwards?
My PHP application processes a lot of ODF files, which are essentially ZIP containers. So, I pass
around a lot of ZipArchive instances by reference. I usually can't close and reopen the file
because I don't have the filename around but just the ZipArchive instance.
------------------------------------------------------------------------
[2007-05-23 22:14:53] pajoye@php.net
All operations (delete, comments, etc.) are applied to the zip file on close, not only the added
files. It allows undo, sanity checks as well as a couple of improvements in the final zip files.
"// Please make sure a dummy test.zip exist before running this code"
Use the creation mode :)
------------------------------------------------------------------------
[2007-05-21 12:49:28] sander dot marechal at tribal dot nl
Description:
------------
When I add or update a file in the zip archive, I cannot read the new file without closing and
reopening the archive first.
If this turns out to be a limitation in zlib then I suggest that a ZipArchive::flush() method of
some sorts is added which can be called between a write and a read to produce the expected result.
Reproduce code:
---------------
#!/usr/bin/php -q
<?php
// Please make sure a dummy test.zip exist before running this code
$zip = new ZipArchive();
$zip->open('test.zip');
$zip->addFromString('test.txt', 'some text');
echo "Before: " . $zip->getFromName('test.txt') . "\n";
$zip->close();
$zip->open('test.zip');
echo "After: " . $zip->getFromName('test.txt') . "\n";
?>
Expected result:
----------------
Both the 'before' and 'after' should output 'some text'.
Actual result:
--------------
'before' is empty. Only 'after' shows 'some text'.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=41456&edit=1
Thread (7 messages)