Stooney Posted April 3, 2011 Share Posted April 3, 2011 The following code works fine when using chrome or firefox, but fails with IE. Error: Requested site is either unavailable or cannot be found. Question: Does anyone see anything here that is a known bug with IE that I don't know about? public function download(){ if($this->validateFile()){ if(!headers_sent()){ header('Content-type: '.$this->getType()); header('Content-Disposition: attachment; filename="'.$this->name.'"'); readfile($this->file); } else{ echo 'Headers have already been sent and are preventing the file download from taking place.'; } return true; } return false; } //I felt this function might be relevant to the issue. I know, it's kind of a ghetto function, I'll improve on it some other time though. private function getType(){ $types=array( 'txt' => 'text/plain', 'mp3' => 'audio/x-mp3', 'jpg' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'gif' => 'image/gif', 'png' => 'image/png', 'doc' => 'application/msword', 'swf' => 'application/x-shockwave-flash', 'flv' => 'video/flv', 'mpg' => 'video/mpeg', 'mpeg' => 'video/mpeg', 'avi' => 'video/x-msvideo', 'rtf' => 'application/rtf', 'pdf' => 'application/pdf', 'zip' => 'application/zip', 'exe' => 'application/octet-stream', 'xls' => 'application/msexcel', 'xlsxl' => 'application/msexcel'); if(!$types[$this->getExt()]==''){ return $types[$this->getExt()]; } return 'application/octet-stream'; } Quote Link to comment https://forums.phpfreaks.com/topic/232607-file-download-broke-in-ie-only/ Share on other sites More sharing options...
.josh Posted April 4, 2011 Share Posted April 4, 2011 dunno if it'll fix your problem, but this line: if(!$types[$this->getExt()]==''){ should be if(isset($types[$this->getExt()])){ Quote Link to comment https://forums.phpfreaks.com/topic/232607-file-download-broke-in-ie-only/#findComment-1196435 Share on other sites More sharing options...
JasonLewis Posted April 4, 2011 Share Posted April 4, 2011 Your not setting a Content-Length header either, perhaps add that is as well. header("Content-Length: " . filesize($this->file)); Quote Link to comment https://forums.phpfreaks.com/topic/232607-file-download-broke-in-ie-only/#findComment-1196525 Share on other sites More sharing options...
Stooney Posted June 22, 2011 Author Share Posted June 22, 2011 For future reference to others, the following fixed the issue for me: <?php header('Content-Description: File Transfer'); header('Content-type: '.$this->getType()); header('Content-Disposition: attachment; filename='.basename($this->file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header("Content-Length: " . filesize($this->file)); ob_clean(); flush(); ?> Quote Link to comment https://forums.phpfreaks.com/topic/232607-file-download-broke-in-ie-only/#findComment-1233275 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.