Mam malinkatej problémek - snažim se stahovat soubory přes PHPčku (nabízet ke stažení) a stránka, která to obsluhuje obsahuje kód:
---------------------------
header("Content-Description: File Transfer");
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=$soubor");
---------------------------
$soubor obsahuje relativní cestu k souboru, který chci stáhnout. Soubor je vždy nahrán ve struktuře (rok)/(měsíc)/(den)/soubor.koncovka.
A jedinej problém, kterej s tímhle řešením mám je to, že soubor ze složky 2008/12/24/ahoj.jpg se mi nestáhne jako ahoj.jpg, ale jako 2008_12_24_ahoj.jpg - v čem mám chybku?
a neodesíláš náhodou tuto hlavičku?
header("Content-Disposition: attachment; filename=2008/12/24/ahoj.jpg");
Nevím jak péhápku, ale mi se tam nelíbí ta lomítka v názvu souboru, zaměněná za podtržítka.
Asi jsem mimo, ale nepochopil jsem ani jeden příspěvek :-)
Vojta:
jo, dyť přesně to jsem psal :-) (více-méně)
Lama:
?
MyFlower: zkus si pojmenovat u sebe v PC nějaký soubor jako 2008/12/24/ahoj.jpg
Co ti z toho vyleze? Chyba! Windows jaksi neberou / \ a kupu dalších znaků jako povolený název souboru. Proto se to asi mění...
Tom: ne asi, ale určitě.
MyFlower: myslel jsem, že sis k této problematice už něco přečetl. Filename by měl udávat nějaký název souboru, nikoliv cestu ve filesystému.
Za hlavičkou by pak měl následovat obsah stahovaného souboru.
To lze provést např. pomocí funkce readfile()
Jak napsal Vojta, filename v headeru znaci samotny nazev souboru (basename($soubor);)..
=Tom=
Nejen windows - neberou to ani unixove stroje, ktere (narozdil od woken) lomitka k necemu pouzivaji...
Aha, jsem to ale blbec :-) moc díky!
Freeze: samozzřejmě - máš pravdu. Neuvědomil jsem si to, protoe mě můj chameleon při takovéto "prasárně" nabídne pouze ahoj.jpg a tu patch před ním ignoruje... To víš, distibuce pro blbce :)