2012-06-04 53 views
2

下面的腳本(只是相關的部分),讓我下載一個文件:PHP - 通過FREAD文件下載保存最後修改時間

if ($file = fopen($file, 'r')) 
{ 
    if(isset($_SERVER['HTTP_RANGE'])) 
    { 
     fseek($file, $range); 
    } 
    while(!feof($file) && 
     (!connection_aborted()) && 
     ($bytes_send<$new_length)) 
    { 
     $buffer = fread($file, $chunksize); 
     print($buffer); //echo($buffer); // is also possible 
     flush(); 
     $bytes_send += strlen($buffer); 
    } 
    fclose($file); 
} 

這樣做,下載的文件將顯示實際的時間作爲其創作時間。

我想知道如何保留它在服務器上的最後修改文件。

我知道我可以用filemtime獲得信息,但我不知道如何將它與上面的腳本結合使用。

+0

我不確定我是否理解您的需求,但是如果您想每次更新上次訪問,請檢查觸摸功能(http://php.net/touch) – mishu

+1

您需要使用更高級的方法來檢索http請求的標題並提取Last-Modified標題。基本的fread()調用完全不能做到這一點。看看使用[流](http://php.net/streams)或[捲曲](http://php.net/curl) –

+0

密蘇:是的,觸摸的問題是,我需要「觸摸」的東西...給定的腳本,我只是輸出原始文件內容! 等等...... @MarcB:我正在尋找解決方案,但現在我還沒有完成! 謝謝 – dop3

回答

0

發送任何輸出之前,請

header("Last-Modified: " . gmdate("D, d M Y H:i:s", filemtime($file)) . " GMT"); 

我不認爲這會導致Web瀏覽器與修改時間本地保存的文件。我認爲你需要使用某種類型的存檔格式,比如zip。

+0

我@chris,謝謝,但我嘗試過,但沒有運氣!我一直在尋找...... – dop3