Mam problem z dawnloadem plików w FF. O dziwo wywala się to tylko w FF natomiast inne przeglądarki (IE6,7 Opera, Safari) jakoś sobie radzą.
Do wysłania pliku służy mi poniższy kod.
<?php private $fileName; private $filePosition; private $type; public function __construct($newName='', $position='', $type=''){ $this->fileName=$newName; $this->filePosition=$position; $this->type = $type; } public function sendFileToUser(){ //wysyla plik do przegladarki $fullPatch = 'files/' .$this->fileName; $this->prepareHeaderToSend($fullPatch, $this->fileName, $extension); $this->sendFile($fullPatch); } private function sendFile($fullPath){ //wysyla plik } private function prepareHeaderToSend ($fullPath, $fileName, $extension) { //ustawiam Content-Type dla danego pliku switch ($extension) { case 'pdf': $type='application/pdf'; break; case 'exe': $type='application/octet-stream'; break; case 'zip': $type='application/zip'; break; case 'doc': $type='application/msword'; break; case 'xls': $type='application/vnd.ms-excel'; break; case 'ppt': $type='application/vnd.ms-powerpoint'; break; case 'gif': $type='image/gif'; break; case 'png': $type='image/png'; break; case 'jpeg': case 'jpg': $type='image/jpg'; break; case 'mp3': $type='audio/mpeg'; break; case 'wav': $type='audio/x-wav'; break; case 'mpeg': case 'mpg': case 'mpe': $type='video/mpeg'; break; case 'mov': $type='video/quicktime'; break; case 'avi': $type='video/x-msvideo'; break; //Ponizszych w zadnym wypadku nie mozna sciagac case 'php': case 'htm': case 'html': throw new Exception('wrong file type'); break; default: $type='application/force-download'; } } } ?>
Po wykonaniu
<?php $f -> sendFileToUser(); ?>
Pojawia się piękne okienko z pytaniem gdzie zapisać plik.
Problem pojawia się dopiero po ściągnięciu pliku (lub anulowaniu operacji), kliknięcie na jakikolwiek link na stronie (w FF) skutkuje
I) wyświetleniem w przeglądarce czystego Htmla (znaczniki)
II) wyświetlenie poniżej aktualnie załadowanej strony, drugiej(właściwej). Ale powtarza się wtedy wszystko (nagłówek, stopka, etc). Dodatkowo zostaję poinformowany o nastepującym
“HTTP/1.1 200 OK Date: Sun, 20 Apr 2008 11:39:35 GMT Server: Apache/1.3.37 (Unix) Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 19 Nov 1981 08:52:00 GMT Pragma: no-cache X-Powered-By: PHP/5.1.4 Set-Cookie: PHPSESSID=957ee335dc3af03f9ebb160c998bbeb4878bb433; path=/ Keep-Alive: timeout=15, max=994 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html;charset=UTF-8 229”
co niestety nie pozwala mi rozwiazac problemu ;( (wydaje mi sie ze to przegladarka niepotrzebnie wyswietlila naglowek, a nie jakas pomocna informacja o problemie)
Firebug nie informuje o żadnym błędzie…
Ma ktoś pomysł w czym tkwi problem, lub widzi jakis blad??
Najbardziej irytuje mnei to, iz dzieje sie tak tylko w FF - inne przegladarki radza sobie normalnie
//edit poprawilem tag