2010-06-07 3 views
1
header('Content-Description: File Transfer'); 
header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment; filename='.basename($file)); 
header('Content-Transfer-Encoding: binary'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize($file)); 
ob_clean(); 
flush(); 
readfile($file); 

내가 파일을 다운로드 할 수 있지만, 파일을 열 수 있습니까? 왜 ?는 PHP 코드와 함께 다운로드 할 파일 열기

+1

그냥 사람이 응답에 대한 문맥 : 질문자가 인용 한 코드 샘플에 대한 php.net의 문서에서 인 [ReadFile을 (HTTP : /을 /uk2.php.net/readfile) function –

+0

로컬 컴퓨터의 파일을 열 수 없습니까? – alex

+0

localhost를 사용하십시오 localhost의 webroot에서이 파일을 열면이 파일을 다운로드하여 엽니 다. – Chameron

답변

3

(안된) 아래 코드를 사용해보십시오 :

header('Content-Description: File Transfer'); 
header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment; filename='.basename($file)); 
header('Content-Transfer-Encoding: binary'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize($file)); 
@ob_end_clean(); 
readfile($file); 
exit(); 
+3

출력 버퍼링 중 하나가 헤더가 어떤 내용보다 먼저 통과하도록 허용하지 않습니까? –

+1

@Arda Xi가 정확합니다. ob_clean은 헤더에 영향을주지 않습니다. – Charles

+0

나는 정정을 받았다. 그래서 나는 확실한 단언보다는 "생각한다"고 말했다. 저 애들을 데리러와 줘서 고마워. 나는 매일 새로운 것을 배운다. –

관련 문제