Autor | Zpráva | ||
---|---|---|---|
cosimo Profil |
Dobrý den,
hledal jsem univerzální script na vynucené stahování pdf, obrázků apod. Ve Firefoxu, Opeře, Chrome i Safari pěkně funguje kód z tohoto zdroje: http://krouzek.slavkuv.net/index.php?obdobi=2009-10&prispevek=02 Jenže IE (10) mi nabízí stažení souboru download.php namísto cílového pokusny.pdf, nevíte, kde je chyba? Tedy ideálem je v html kódu volat php s parametrem souboru: <a href="download.php?co=pokusny.pdf">pokusny.pdf</a> Vlastní kód je tady: <?php if ( isset($_GET["co"]) ) { $cesta = "soubory/"; $soubor = htmlspecialchars($_GET["co"], ENT_QUOTES); $soubor = stripslashes($soubor); // odstraní \ $soubor = str_replace("/","",$soubor); // odstraní / $max = (int) ini_get("post_max_size"); if ( file_exists("$cesta$soubor") ) { if ( filesize("$cesta$soubor") >= $max*1024*1024 ) header ("Location: $cesta$soubor"); else { header ("Content-Description: File Transfer"); header ("Content-Type: application/force-download"); header ("Content-Disposition: attachment; filename=$soubor"); header ("Expires: 0"); header ("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header ("Pragma: public"); header ('Content-Length: '.filesize ("$cesta$soubor")); readfile($cesta.$soubor); } } else echo "Soubor nenalezen"; } else echo "Voláno bez parametru"; ?> (Případně nebyl by odzkoušený jiný bezpečný kód pro všechny prohlížeče? Zkusil jsem kde co, a tenhle byl nejslibnější.) |
||
Enko Profil |
#2 · Zasláno: 1. 9. 2013, 10:04:34
Toto mi valí všude. Tak si to zakomponuj do toho tvého a dej vědět.
$file = "soubor.pdf"; header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($file)); 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: ' . filesize($file)); readfile($file); exit; |
||
cosimo Profil |
#3 · Zasláno: 1. 9. 2013, 12:08:00
Enko:
Díky za tip, ale tam máš soubor zadaný natvrdo. Mě šlo o jeden univerzální php script, kam budu posílat rozličné stahované soubor přes parametr. Nicméně jsem prozatím použil a odzkoušel řešení, které mi vyhovuje: http://stackoverflow.com/questions/3814856/pdf-files-opening-up-in-browser/3815022#3815022 Avšak script, na který se ptám původně by se mi líbil víc, stran univerzálnosti a bezpečnosti, jen kdyby fungoval i v IE... |
||
Enko Profil |
#4 · Zasláno: 1. 9. 2013, 12:27:20
No však jo, jen si změň svůj řádek 15 až 25 za moje 2 až 9. Zkoušel jsi? Toto mám vyzkoušené na vynucení stahování souboru snad ve všech v dnešní době používaných prohlížečích.
|
||
cosimo Profil |
#5 · Zasláno: 1. 9. 2013, 12:55:32
Enko:
Zkoušel, změna hederů nepomohla, IE10 pořád vybízí ke stažení souboru download.php, problém bude jinde... |
||
Tori Profil |
#6 · Zasláno: 1. 9. 2013, 20:28:37
cosimo:
Název souboru, který stahujete, obsahuje jen znaky bez diakritiky? Anebo i mezery, ěščřžýáíé apod.? |
||
cosimo Profil |
#7 · Zasláno: 2. 9. 2013, 00:45:56
Tori:
jednoslovný název malými písmeny bez diakritiky |
||
Časová prodleva: 11 let
|
0