Autor | Zpráva | ||
---|---|---|---|
Chuchycek Profil |
#1 · Zasláno: 10. 3. 2013, 12:10:27
Ahoj,
při zazipování, se mi vytvoří archiv zip bez problému, ale když už přidám hlavičku pro stažení, tak mi chrome začne házet chybu: Chyba 6(net::ERR_FILE_NOT_FOUND):, takže nevím jestli mám úplně špatně vyplněnou header nebo něco jiného, jediný prohlížeč ve kterém mi to jde stáhnout je opera. $fotky = explode(",", $objednavka['obj_online']); $file = tempnam(".", "zip"); $zip = new ZipArchive(); $zip->open($file, ZipArchive::OVERWRITE); foreach ($fotky as $value) { $cesta = SLOZKA . $objednavka['obj_album'] . "/" . $value; $zip->addFile($cesta, $value); } $zip->close(); $filename = "objednavka-" . $objednavka['obj_id'] . ".zip"; header('Content-Disposition: attachment; filename=' . $filename); readfile($file); unlink($file); |
||
Jan Tvrdík Profil |
#2 · Zasláno: 10. 3. 2013, 12:29:58
Chuchycek:
Jaké hlavičky dorazí ke klientovi? |
||
Chuchycek Profil |
Původně jsem měl hlavičky, takové
header("Pragma: public"); header("Content-Description: File Transfer"); header("Content-Type: application/download"); header("Content-Disposition: attachment; filename=" . $filename); header("Content-Length: ". filesize($file)); ale teď ke klientovi nedorazí zřejmě nic, když mi to vyhodí rovnou chybu. |
||
Jan Tvrdík Profil |
#4 · Zasláno: 10. 3. 2013, 12:44:32
Chuchycek:
Zkus si přečíst tyhle dvě vlákna na Stack Overflow: 1) stackoverflow.com/questions/11015789/error-6-neterr-file-not-found-the-file-or-directory-could-not-be-found 2) stackoverflow.com/questions/8031301/php-readfile-not-working-for-me-and-i-dont-know-why |
||
Chuchycek Profil |
To první jsem četl, ale to nikterak můj problém nevyřešilo, jelikož v chromu žádné rozšíření nemám.
Ale to druhé řešení se zdá být na dobré cestě, ale nejsem si jistý, zdali to dělám takhle dobře? $file = tempnam(".", "zip"); $zip = new ZipArchive(); $zip->open($file, ZipArchive::OVERWRITE); foreach ($fotky as $value) { $cesta = SLOZKA . $objednavka['obj_album'] . "/" . $value; $zip->addFile($cesta, $value); } $zip->close(); $filename = "objednavka-" . $objednavka['obj_id'] . ".zip"; header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-Description: File Transfer"); header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header("Content-Disposition: attachment; filename=" . $filename); header("Content-Transfer-Encoding: binary"); header("Content-Length: " . filesize($file)); flush(); $handle = fopen($file, 'rb'); $buffer = ''; if ($handle === false) { die('fopen failed to open the file.'); } while (!feof($handle)) { $buffer = fread($handle, filesize($file)); echo $buffer; flush(); } fclose($handle); unlink($file); |
||
Jan Tvrdík Profil |
Chuchycek:
Ten kód na výpis nedává moc smysl. Buď to budeš číst postupně (jak je na odkázané stránce): while (!feof($handle)) { echo fread($handle, 4096); flush(); } fclose($handle); Nebo to přečteš všechno najednou: echo fread($handle, filesize($file)); flush(); fclose($handle); |
||
Chuchycek Profil |
#7 · Zasláno: 10. 3. 2013, 14:00:29
Tak to nakonec nevyřešilo můj problém, ten je pořád v hlavičkách, kdykoliv tam dám některou z nich tak mi to vyhodí stejnou chybu
header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header("Content-Disposition: attachment; filename=" . $filename); |
||
Jan Tvrdík Profil |
#8 · Zasláno: 10. 3. 2013, 14:56:18
Chuchycek:
V tom případě by se hodila odpověď na [#2]. Chrome ani Firefox ve vývojových nástrojích nic nezobrazí? |
||
Chuchycek Profil |
#9 · Zasláno: 10. 3. 2013, 22:38:29
Dostávám toto.
Array ( [0] => HTTP/1.1 404 Not Found [1] => Date: Sun, 10 Mar 2013 21:38:00 GMT [2] => Server: Apache/2.2.22 (Debian) [3] => X-Powered-By: PHP/5.4.4-10 [4] => X-Pingback: http://fotkydoma.cz/xmlrpc.php [5] => Pragma: public [6] => Expires: 0 [7] => Cache-Control: must-revalidate, post-check=0, pre-check=0 [8] => Content-Description: File Transfer [9] => Content-Disposition: attachment; filename=objednavka-1000000000.zip [10] => Content-Transfer-Encoding: binary [11] => Set-Cookie: PHPSESSID=nbvqjrado8uh4m0fnsdla13hv2; path=/ [12] => Content-Length: 281980 [13] => Connection: close [14] => Content-Type: application/download ) |
||
Jan Tvrdík Profil |
Chuchycek:
Zjisti, kde se vzdalo „HTTP/1.1 404 Not Found“. Funkce http_response_code (PHP 5.4+) ti může být nápomocná. |
||
Davex Profil |
#11 · Zasláno: 10. 3. 2013, 22:44:56
Chuchycek:
HTTP/1.1 404 Not Found 200 OK .
|
||
Chuchycek Profil |
#12 · Zasláno: 10. 3. 2013, 22:46:58
Takže by mělo stačit, když nastavím hlavičku na header("HTTP/1.0 200 OK");? Jestli to dobře chápu
|
||
aDAm Profil |
#13 · Zasláno: 11. 3. 2013, 09:37:11
ne musíš přijít na to kde se ti tam cpe 404ka a vyřešit proč se ti tam cpe.
|
||
Chuchycek Profil |
#14 · Zasláno: 11. 3. 2013, 10:29:14
Davex:
Máte pravdu. Už jsem na to přišel vkládal jsem tam nejspíše moc jádra z wp a tak mi to vracelo špatnou hlavičku, nyní vkládám pouze konfigurační soubor a databázovou třídu a vše je OK. Moc díky. |
||
Časová prodleva: 11 let
|
0