Changeset 4751


Ignore:
Timestamp:
07/14/11 16:58:20 (13 years ago)
Author:
roberto.santosjunior
Message:

Ticket #1820 - modificados headers passados para o user agent no download de anexos para arquivamento. r4595

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/expressoMail1_2/inc/gotodownload.php

    r4348 r4751  
    88} 
    99require_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 
    1211 
    1312        $msg_number = $_GET['msg_number']; 
    1413        $idx_file = $_GET['idx_file']; 
    15         $newfilename = html_entity_decode(rawurldecode($_GET['newfilename'])); 
     14        $newfilename = html_entity_decode(rawurldecode($_GET['newfilename'])); 
    1615        $msg_part = $_GET['msg_part']; 
    1716        $msg_folder = $_GET['msg_folder']; 
     
    163162                header("Expires: 0"); // set expiration time 
    164163                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) { 
    167168                        if($encoding == 'base64') 
    168169                                echo imap_base64($fileContent); 
     
    173174                } 
    174175                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)) 
    178178                        { 
    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); 
    192206                                        } 
    193                                         fclose ($fp); 
     207                                        //readfile($strFileName); 
     208 
     209                                        exec("rm -f ".escapeshellcmd(escapeshellarg($strFileName))); 
    194210                                } 
    195  
    196                                 //removendo pelo php, garante a suportabilidade cross-platform 
    197                                 cleanup( dirname( $strFileName ) ); 
     211                                else 
     212                                        readfile($strFileName); 
    198213                        } 
    199                         else  
    200                         { 
    201                                 if (preg_match("#^".dirname( __FILE__ ) . '/../tmpLclAtt'."/source_#",$strFileName)) { 
    202                                         readfile($strFileName); 
    203                                 } 
    204                         } 
    205                 } 
    206214        } 
    207215?> 
Note: See TracChangeset for help on using the changeset viewer.