Autor | Zpráva | ||
---|---|---|---|
borys Profil * |
#1 · Zasláno: 19. 1. 2010, 23:18:48
Zdravím.
Mám stránky, které umožňují nahrávání a stahování souborů (ale žádné velké soubory, hlavně dokumenty nebo obrázky). Jak to funguje: pokud chci stáhnout soubor z adresy např. adresa.cz/soubory/název_souboru.přípona, tak mě to přesměruje pomocí mod_rewrite na stránku: adresa.cz/index.php?id=stahuj&soubor=název_souboru. Na stránce stahuj.php vypisuju nějaké informace o tom souboru (velikost, počet stažení atd....) a stránka mi nabídne odkaz na samotné stažení. Stahování zajišťuje soubor dl.php (http://adresa.cz/dl.php?soubor=adresa.přípona). V dl.php mám následující kód <?php require('connect.php'); $stahovany_soubor=$_GET['soubor']; header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: public"); header("Content-Description: File Transfer"); header('Content-type: application/octet-stream;'); header("Content-Disposition: attachment; filename=\"{$stahovany_soubor}\";"); header("Content-Transfer-Encoding: binary"); $len = filesize("./soubory/{$stahovany_soubor}"); header("Content-Length: {$len}"); @readfile("soubory/{$stahovany_soubor}"); $sql=mysql_query("select stazeni from files where nazev='$stahovany_soubor'"); $mysql=mysql_fetch_array($sql); $stazeni=$mysql['stazeni']; $stazeni=$stazeni+1; $sql=mysql_query("update files set stazeni='$stazeni' where nazev='$stahovany_soubor'"); ?> No a k jádru samotného problému: Nuceně mi to stahuje všechny soubory. Já ale chci, aby mi to nuceně stahovalo všechny soubory, kromě obrázků; potřebuju, aby se obrázky normálně zobrazovaly v prohlížeči. Zkoušel jsem změnit hlavičku z application/octet-stream na image/png (zkoušel jsem to na png souboru), ale nefungovalo mi to. Snad jsem se dobře vyjádřil. |
||
Cup Profil |
#2 · Zasláno: 20. 1. 2010, 00:34:27
kdysi dávno jsem nekde na netu stáhl pecanovi hlavicky ... pouzivam je doted a asi by ti meli pomoci(dle popisu) s tim co potrebudjes ...
$file = $_GET['file']; header('Pragma: anytextexeptno-cache', true); header('Content-type: application/force-download'); header('Pragma: private'); header('Cache-control: private, must-revalidate'); header('Content-Transfer-Encoding: Binary'); header('Content-length: '.filesize($file)); header('Content-disposition: attachment; filename='.basename($file)); readfile($file);?> |
||
Cup Profil |
#3 · Zasláno: 20. 1. 2010, 00:38:09
a mám pocit ze cely tento tvuj kus kodu
$sql=mysql_query("select stazeni from files where nazev='$stahovany_soubor'"); $mysql=mysql_fetch_array($sql); $stazeni=$mysql['stazeni']; $stazeni=$stazeni+1; $sql=mysql_query("update files set stazeni='$stazeni' where nazev='$stahovany_soubor'"); lze nahradit $sql=mysql_query("update files set `stazeni`= `stazeni`+1 where `nazev`='$stahovany_soubor'"); |
||
borys Profil * |
#4 · Zasláno: 20. 1. 2010, 09:31:51
Cup:
„$sql=mysql_query("update files set `stazeni`= `stazeni`+1 where `nazev`='$stahovany_soubor'");“ Jo, díky za upozornění, upravím si to. Ale potřebuju vyřešit, aby mi prohlížeč normálně zobrazoval obrázky, ale všechno ostatní se stahovalo vynuceně. |
||
Kajman_ Profil * |
#5 · Zasláno: 20. 1. 2010, 10:03:54
U obrázků nastavte pouze správně header Content-type, ostatní nenastavujte vůbec (nejspíše zlobí Content-disposition).
|
||
AM_ Profil |
#6 · Zasláno: 20. 1. 2010, 10:15:37
tj u obrázků je content-type: image/(jpeg|gif|png a další)
|
||
Časová prodleva: 13 let
|
0