FileResponse – první znak souboru je hex 09
- Filip111
- Člen | 244
Ahoj, narazil jsem na podivné chování při stahování příloh.
Reference na soubory mám uložené v DB, odtud načtu místo a název souboru
a pomocí FileResponse vrátím.
Když ale srovnám soubor na FTP se staženým souborem, tak ten stažený má
na začátku navíc jeden znak, hexadecimálně je to 09 (co do velikosti jsou
na byte stejný).
Už jste se s tím setkali?
PDF souborům to nijak nevadí a jdou otevřít, ale třeba jpeg obrázky už windows neotevřou (např. XnView si s tím poradí, ale klasický prohlížeč obrázků z windows nebo IE nikoliv).
$dr = new FileResponse(
WWW_DIR. $att['path'] . $att['filename'],
$att['filename'],
"application/text"
);
$this->sendResponse($dr);
Napadlo mě, že jsem trochu odfláknul MIME typy a tak jsem zkusil dát
image/jpeg nebo i další, ale bez výsledku.
Cílem je donutit prohlížeč uložit soubor vždy na disk.
Díky.
- Honza Kuchař
- Člen | 1662
Nevim, jestli se trefim, ale zkus si zkrontrolovat utf-8 BOM. Na foru jsem kdysi publikoval dokonce kod na autamoticke odstraneni ze vsech php souboru… Treba jsem ti tim pomohl…
- David Grudl
- Nette Core | 8228
Kód na automatické odstranění BOM je součástí frameworku, Tools/Code-Checker
- Filip111
- Člen | 244
Zkoušel jsem to prohnat code checkerem, ale zdrojáky jsou bez BOM. Tam tedy
problém není.
Navíc jsem koukal na wiki, kde jsou popsaný formáty BOM a žádný
nezačíná hex 09.
Nemáte ještě nějaký nápad?
Příp. nemůžete někdo porovnat Váš soubor na FTP a stažený jestli je
skutečně stejný? (nikoliv na velikost ale na první znaky).
- fak
- Člen | 48
ja jsem napriklad zjistil, ze mi to dela extra radek v Session Panelu před sekvenci <?php
tohle totiz code checker neodstranuje
Já bych tam prostě Davide ten ob_clean do toho FileResponse šoupnul, vidíš jaký blbosti způsobuje jedna mezera před výstupem binárního souboru…
Editoval fak (23. 8. 2012 11:59)