2012-06-04 2 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() 호출로는이 작업을 수행 할 수 없습니다. [stream] (http://php.net/streams) 또는 [curl] (http://php.net/curl) –

+0

을 사용하십시오. mishu : 예, 터치의 문제점은 내가 뭔가를 만질 필요가 있다는 것입니다. ... 주어진 스크립트로 나는 그냥 원시 파일 내용을 출력하고 있습니다! 그래서 @MarcB : 나는 해결책을 찾고 있지만, 지금은 아직 끝나지 않았습니다! 감사합니다 – dop3

답변

0

, 나는이 그 수정 시간으로 파일을 로컬로 저장하는 웹 브라우저의 원인이됩니다 생각하지 않는다

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

않습니다. 나는 당신이 그것을 위해 아카이브 형식의 어떤 유형을 사용할 필요가 있다고 생각한다.

+0

저는 @chris, 고마워요. 그러나 나는 이것을 시험해 보았습니다 만, 운이 없었습니다! 나는 계속 찾고있다 ... – dop3