Changeset 4348 for sandbox/2.2.0.2/expressoMail1_2/inc/gotodownload.php
- Timestamp:
- 05/11/11 17:03:17 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sandbox/2.2.0.2/expressoMail1_2/inc/gotodownload.php
r3369 r4348 8 8 } 9 9 require_once '../../header.inc.php'; 10 10 //TODO: alterar a string /tmp logo abaixo, pelo caminho temporario configurado no expresso 11 $GLOBALS['phpgw_info']['server']['download_temp_dir'] = "/tmp"; 11 12 12 13 $msg_number = $_GET['msg_number']; 13 14 $idx_file = $_GET['idx_file']; 14 15 $newfilename = html_entity_decode(rawurldecode($_GET['newfilename'])); 15 16 $msg_part = $_GET['msg_part']; 16 17 $msg_folder = $_GET['msg_folder']; … … 162 163 header("Expires: 0"); // set expiration time 163 164 header ("Content-Disposition: attachment; filename=\"". addslashes($newFileName)."\""); 165 164 166 if($fileContent) { 165 167 if($encoding == 'base64') … … 171 173 } 172 174 else 173 174 if (strstr($strFileName,$GLOBALS['phpgw']->session->sessionid)&&file_exists($strFileName)) 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)) 175 178 { 176 header("Content-Type: $ContentType"); 177 header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 178 header("Pragma: public"); 179 header("Expires: 0"); // set expiration time 180 header ("Content-Disposition: attachment; filename=\"". addslashes($newFileName)."\""); 181 readfile($strFileName); 182 }else{ 183 header("HTTP/1.1 404 Not Found"); 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(); 192 } 193 fclose ($fp); 194 } 195 196 //removendo pelo php, garante a suportabilidade cross-platform 197 cleanup( dirname( $strFileName ) ); 184 198 } 185 186 187 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)) 199 else 188 200 { 189 if ( ! preg_match("#^".dirname( __FILE__ ) . '/../tmpLclAtt'."/source_#",$strFileName)) { 190 //reset time limit for big files 191 set_time_limit(0); 192 ob_end_flush(); 193 194 if ($fp = fopen ($strFileName, 'rb')) 195 { 196 $bufferSize=1024; 197 for ($i=$bufferSize; $i<=(filesize($strFileName)+$bufferSize); $i+=$bufferSize) 198 { 199 echo fread($fp, $i); 200 flush(); 201 } 202 fclose ($fp); 203 } 204 //readfile($strFileName); 205 206 exec("rm -f ".escapeshellcmd(escapeshellarg($strFileName))); 201 if (preg_match("#^".dirname( __FILE__ ) . '/../tmpLclAtt'."/source_#",$strFileName)) { 202 readfile($strFileName); 207 203 } 208 else209 readfile($strFileName);210 204 } 205 } 211 206 } 212 207 ?>
Note: See TracChangeset
for help on using the changeset viewer.