Autor Zpráva
AAA
Profil *
Ahoj, mám takový problém se stahováním souborů. mám skript, který mi načte názvy souborů do tabulky a po kliknutí se mají stáhnout. problém je ale s tím, že když se stáhne rar nebo zip, tak nejde otevřít.
Takhle vypadá kod:
    $id = $_GET['nazev'];    
    $size = $_GET['size'];
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$id);
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . $size);
readfile($id);
exit;

Díky za radu
Keeehi
Profil
AAA:
Když vynecháš Content-Length, tak už to funguje? Když ty soubory stáhneš přímo, ne přes tento script, jsou v pořádku?
AAA
Profil *
Ani bez Content-Length to nefunguje. a jak přímo? Jako kliknout pravým a dát stáhnout? tak tím to taky nejde...


Když ho chci otevřít hlásí to, že archiv má bud neznámý formát, nebo je poškozen. přitom se to stáhne jako zip a i velikost má správnou, tak nevím co na tom může být špatně
ShiraNai7
Profil
Trošku offtopic, ale když budeš volat readfile($id) (což je prakticky readfile($_GET['nazev']) tak si vytváříš dost závažnou bezpečnostní díru na webu. A první, co potencionální útočník vyzkouší, je vložit místo názvu něco jiného.
Keeehi
Profil
AAA:
a jak přímo?
Takhle: http://example.com/slozka/soubor.zip - jde o to zjistit, jestli je soubor vůbec v pořádku nahrán. Pokud i takto stáhnutý soubor se neodaří otevřít, chyba v scriptu nebude.

Ještě zkuste z toho scriptu odstranit header('Content-Transfer-Encoding: binary');
AAA
Profil *
Přímo jde stáhnout bez problému. zkoušel jsem odstranit i ten transfer-encoding a stále nefunguje.
Keeehi
Profil
<?php
$id = $_GET['nazev'];
header("Content-Description: File Transfer");
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=\"$id\""); 
readfile ($id);
AAA
Profil *
Bohužel, stále nic
Kcko
Profil
AAA:
Nemáte tam nějaký Gzip s output bufferingem?
Keeehi
Profil
Kromě velikostí původního a staženého souboru, sedí také kontrolní součty?
AAA
Profil *
Nene, prostě jsem označil pár souborů, kliknul jsem pravým a dal zazipovat, žádný speciální nastavení jsem nedělal. Potom jsem si stáhnul z uložta jeden malý zip, od nich to funguje, ale když jsem ho stahoval ze svýho webu, tak nešel..
Keeehi
Profil
"Gzip s output bufferingem" nemá nic s vaším zazipováním společného. Je to nastavení na servru pro komprimaci jeho výstupu.
Jaká je adresa toho scriptu?
AAA
Profil *
mám to na localhostu, používám xampp, nevíte jestli to nemá defaultně nastavený? a popřípadě kde se to dá změnit?
Jinak ten web potom poběží na free hostingu http://www.000webhost.com/
Keeehi
Profil
http://php.net/manual/en/zlib.configuration.php
AAA
Profil *
Tak jsem to přenastavil a už to funguje

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: