| 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: 12 let
|
|||
0