Changeset 4751
- Timestamp:
- 07/14/11 16:58:20 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoMail1_2/inc/gotodownload.php
r4348 r4751 8 8 } 9 9 require_once '../../header.inc.php'; 10 //TODO: alterar a string /tmp logo abaixo, pelo caminho temporario configurado no expresso 11 $GLOBALS['phpgw_info']['server']['download_temp_dir'] = "/tmp"; 10 12 11 13 12 $msg_number = $_GET['msg_number']; 14 13 $idx_file = $_GET['idx_file']; 15 14 $newfilename = html_entity_decode(rawurldecode($_GET['newfilename'])); 16 15 $msg_part = $_GET['msg_part']; 17 16 $msg_folder = $_GET['msg_folder']; … … 163 162 header("Expires: 0"); // set expiration time 164 163 header ("Content-Disposition: attachment; filename=\"". addslashes($newFileName)."\""); 165 166 if($fileContent) { 164 // No IE para que os nomes de arquivos com caracteres especiais no download fiquei corretos o nome deve ser codificado com urlencode. 165 if (preg_match('/msie/i', $_SERVER['HTTP_USER_AGENT'])) 166 $newFileName=urlencode($newFileName); 167 if($fileContent) { 167 168 if($encoding == 'base64') 168 169 echo imap_base64($fileContent); … … 173 174 } 174 175 else 175 { 176 $tempDir = $GLOBALS['phpgw_info']['server']['download_temp_dir']; 177 if (preg_match("#^".$tempDir."/(".$GLOBALS['phpgw']->session->sessionid."/)*[A-z0-9_]+_".$GLOBALS['phpgw']->session->sessionid."[A-z0-9]*(\.[A-z]{3,4})?$#",$strFileName)) 176 177 if (strstr($strFileName,$GLOBALS['phpgw']->session->sessionid)&&file_exists($strFileName)) 178 178 { 179 //avoid stuck request 180 session_write_close(); 181 182 //reset time limit for big files 183 set_time_limit(0); 184 ob_end_flush(); 185 186 if ($fp = fopen ($strFileName, 'rb')) 187 { 188 $bufferSize=1024; 189 for ($i=$bufferSize; $i<=(filesize($strFileName)+$bufferSize); $i+=$bufferSize) { 190 echo fread($fp, $i); 191 flush(); 179 header("Content-Type: $ContentType"); 180 header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 181 header("Pragma: public"); 182 header("Expires: 0"); // set expiration time 183 header ("Content-Disposition: attachment; filename=\"". addslashes($newFileName)."\""); 184 readfile($strFileName); 185 }else{ 186 header("HTTP/1.1 404 Not Found"); 187 } 188 189 190 if (preg_match("#^".ini_get('session.save_path')."/(".$GLOBALS['phpgw']->session->sessionid."/)*[A-z]+_".$GLOBALS['phpgw']->session->sessionid."[A-z0-9]*(\.[A-z]{3,4})?$#",$strFileName)) 191 { 192 if ( ! preg_match("#^".dirname( __FILE__ ) . '/../tmpLclAtt'."/source_#",$strFileName)) { 193 //reset time limit for big files 194 set_time_limit(0); 195 ob_end_flush(); 196 197 if ($fp = fopen ($strFileName, 'rb')) 198 { 199 $bufferSize=1024; 200 for ($i=$bufferSize; $i<=(filesize($strFileName)+$bufferSize); $i+=$bufferSize) 201 { 202 echo fread($fp, $i); 203 flush(); 204 } 205 fclose ($fp); 192 206 } 193 fclose ($fp); 207 //readfile($strFileName); 208 209 exec("rm -f ".escapeshellcmd(escapeshellarg($strFileName))); 194 210 } 195 196 //removendo pelo php, garante a suportabilidade cross-platform 197 cleanup( dirname( $strFileName ) ); 211 else 212 readfile($strFileName); 198 213 } 199 else200 {201 if (preg_match("#^".dirname( __FILE__ ) . '/../tmpLclAtt'."/source_#",$strFileName)) {202 readfile($strFileName);203 }204 }205 }206 214 } 207 215 ?>
Note: See TracChangeset
for help on using the changeset viewer.