Nefunkčné generované zip s vždy rovnakov velkosťou
- KristianSubweb
- Člen | 146
Ahojte nevedeli by ste pomocť generujem zip do ktorého chcem vložiť niekolko suborov. Zakaždím je rovnako velké a nedá sa mi ani otvoriť ? Neviete kde robím chybu?
$zipName = 'test.zip';
$zip = new \ZipArchive();
if ($zip->open($zipName, \ZipArchive::CREATE)!== TRUE)
throw new InvalidOperationException('Nepodařilo se otevřít zip archiv.');
foreach ($v["filesId"] as $id) {
$file = $this->multimediaService->findById($id);
$path = $this->request->getUrl()->baseUrl . $file->getPath();
$zip->addFile($path, $file->getName());
}
$zip->close();
$this->httpResponse->setHeader('Content-Description', 'File Transfer');
$this->httpResponse->setContentType('application/zip', 'UTF-8');
$this->httpResponse->setHeader('Content-Disposition', 'attachment; filename=' . $zipName);
$this->httpResponse->setHeader('Content-Transfer-Encoding', 'binary');
$this->httpResponse->setHeader('Expires', 0);
$this->httpResponse->setHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0');
$this->httpResponse->setHeader('Pragma', 'public');
$this->httpResponse->setHeader('Content-Length', filesize($zipName));
Editoval KristianSubweb (12. 9. 2018 15:04)
- David Matějka
- Moderator | 6445
- když pracuješ se soubory, vždy používej absolutní cestu –
konkrétně u toho
zipName
, který asi budeš chtít umístit do nějaké temp složky - poté si zkontroluj, že máš zápis do té složky
$this->request->getUrl()->baseUrl
nemůže fungovat, to vráti cestu z URL, ne na disku