2014-06-24 1 views
2

다음 헤더를 사용하여 다운로드를 강제하고 있지만 파일 형식 인 경우 브라우저에서 PDF 및 JPG와 같은 특정 파일을 표시하도록 시도해야합니다. exntension은 쉽지만 브라우저에서 파일을 열려면이 헤더를 어떻게 변경할 수 있습니까?PHP - 파일 형식에 따라 브라우저에서 강제로 다운로드하거나보기하십시오.

header("Content-Description: File Transfer"); 
header("Content-type: application/octet-stream"); 
$header="Content-Disposition: attachment; filename=".$filename.";"; 
header($header); 
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"); 
+2

'Content-Type'과'Content-Disposition'을 하나로 변경하십시오. –

+0

대부분의 브라우저는 application/octet-stream을 표시하지 않으며 어쨌든 다운로드를 선택합니다. 브라우저에 표시 할 파일의 올바른 콘텐츠 유형 (이미지/jpeg 등)을 설정해야합니다. – cmbuckley

+0

내 질문에 답장을 표시하고 금지 대상이 됨으로써 의견보다는 답을 만들어 주시겠습니까? - 감사합니다. – user1209203

답변

2

브라우저에 파일을 표시하려면 올바른 MIME 유형을 사용해야합니다. 당신은 파일 확장명에 따라 스스로를 설정할 수 있습니다, 또는 당신이 finfo module 사용할 수 있습니다이없이

function getContentType($filename) { 
    $finfo = new finfo(FILEINFO_MIME); 
    return $finfo->file($filename); 
} 

header("Content-Type: " . getContentType($filename)); 

를, 브라우저는 application/octet-stream 내용을 처리하고, 어쨌든 다운로드를 강제 할 수없는 아마를 가정합니다.

강제로 파일을 다운로드하려면 Content-Disposition 헤더 만 보내야합니다. 해당 헤더를 제거하면 브라우저가 파일을 표시할지 또는 다운로드 할지를 결정할 수 있습니다.

관련 문제