I am a hacker in the dark of a very cold night

path :/var/www/html/vorne.webheaydemo.com

upload file:

List of files:

name file size edit permission action
.editorconfig276 KBMarch 05 2024 07:12:340666
.env1385 KBMay 24 2024 16:43:550666
.env.example1088 KBMarch 05 2024 07:12:340666
.gitattributes190 KBMarch 05 2024 07:12:340666
.gitignore245 KBMarch 05 2024 07:12:340666
.htaccess947 KBJuly 04 2023 21:25:080664
.rnd1024 KBMarch 13 2024 04:51:140666
README.md472 KBMarch 22 2024 10:35:000666
app-March 05 2024 07:12:340777
artisan1739 KBMarch 05 2024 07:12:340666
bootstrap-March 05 2024 07:12:340777
composer.json2829 KBMay 13 2024 12:10:040666
composer.lock417205 KBMarch 19 2024 12:13:140666
config-July 03 2025 02:53:360777
database-March 05 2024 07:12:340777
index.php1816 KBMay 13 2024 10:32:360666
lang-May 13 2024 14:53:260777
manifest.json913 KBMay 14 2024 03:57:260664
package.json398 KBMarch 05 2024 07:12:340666
phpunit.xml1206 KBMarch 05 2024 07:12:340666
public-July 03 2025 02:37:200777
resources-May 13 2024 12:09:360777
routes-March 05 2024 07:12:340777
service-worker.js924 KBMarch 05 2024 07:12:340666
storage-March 05 2024 10:03:520777
symlink.php218 KBMarch 05 2024 07:12:340666
tests-March 05 2024 07:12:340777
vendor-March 19 2024 12:13:140777
vite.config.js326 KBMarch 05 2024 07:12:340666
Adding Content-Length header ============= Adding a ``Content-Length`` header for ``ZipStream`` is not trivial since the size is not known beforehand. The following workaround adds an approximated header: .. code-block:: php class Zip { /** @var string */ private $name; private $files = []; public function __construct($name) { $this->name = $name; } public function addFile($name, $data) { $this->files[] = ['type' => 'addFile', 'name' => $name, 'data' => $data]; } public function addFileFromPath($name, $path) { $this->files[] = ['type' => 'addFileFromPath', 'name' => $name, 'path' => $path]; } public function getEstimate() { $estimate = 22; foreach ($this->files as $file) { $estimate += 76 + 2 * strlen($file['name']); if ($file['type'] === 'addFile') { $estimate += strlen($file['data']); } if ($file['type'] === 'addFileFromPath') { $estimate += filesize($file['path']); } } return $estimate; } public function finish() { header('Content-Length: ' . $this->getEstimate()); $options = new \ZipStream\Option\Archive(); $options->setSendHttpHeaders(true); $options->setEnableZip64(false); $options->setDeflateLevel(-1); $zip = new \ZipStream\ZipStream($this->name, $options); $fileOptions = new \ZipStream\Option\File(); $fileOptions->setMethod(\ZipStream\Option\Method::STORE()); foreach ($this->files as $file) { if ($file['type'] === 'addFile') { $zip->addFile($file['name'], $file['data'], $fileOptions); } if ($file['type'] === 'addFileFromPath') { $zip->addFileFromPath($file['name'], $file['path'], $fileOptions); } } $zip->finish(); exit; } } It only works with the following constraints: - All file content is known beforehand. - Content Deflation is disabled Thanks to `partiellkorrekt `_ for this workaround.