Autor Zpráva
borys
Profil *
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
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
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 *
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 *
U obrázků nastavte pouze správně header Content-type, ostatní nenastavujte vůbec (nejspíše zlobí Content-disposition).
AM_
Profil
tj u obrázků je content-type: image/(jpeg|gif|png a další)

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: