2010-04-09 2 views
1

PHP 페이지에서 PDF를 '표시'하고 싶습니다. 다음은 코드입니다.Firefox가 PHP에서 설정 한 콘텐츠 유형을 감지하지 못합니다.

<?php 
    header("Content-type: application/pdf"); 
    readfile('Reportage - Berlin.pdf'); //tried echo(readfile(...)) as well 
?> 

필자는 생각하지 않지만 어쨌든 firefox cant는 pdf라는 것을 감지합니다. 이것은 Safari에서 작동하지만 파이어 폭스에서는 파일을 다운로드하라는 메시지가 표시되므로 pdftest.php 파일처럼 보입니다. pdf 확장명을 바꾸면 파일을 열 수 있기 때문에 파일을 가져 오는 중임을 안다.

너무 간단합니다. 내가 놓친 게 있니?

답변

5

Adobe Reader를 사용하여 브라우저에서 열려면 브라우저 설정에 따라 달라질 수 있습니다. 파일 이름이 pdftest.php라는 이유는 브라우저에 파일 이름이 무엇인지 알려주지 않기 때문입니다. 당신이 그것을 다운로드하는 브라우저를 강제하려면

이 추가 :

header('Content-Disposition: attachment; filename="downloaded.pdf"');

+1

+1 "pdftest.php"다음에 파일 이름을 후행 경로 부분으로 넣으면됩니다. (비 ASCII 파일 이름에 필요할 수 있습니다.) – bobince

+0

@Htbaa : 다운로드를 강제하지 않으려면 어떻게해야합니까? 이 옵션을 사용하면 파일을 브라우저 창에서 '미리보기'하는 대신 다운로드 할 수 있습니다. 나는 더 큰 질문을 추측한다 :이 브라우저 미리보기는 사파리 전용 기능에 가깝습니까? ff에서이 동작을 시뮬레이트 할 수있는 방법이 있습니까? 그러나 이것은 확실히 형식을 볼 ff 만드는 방법에 대한 내 질문에 대한 대답. – Ying

+0

@bobince : 정확히 내가 필요한 것! 당신은 남자 (또는 여자)입니다! – Ying

4

Htbaa을 추가해야하는지 라인에 대한 권리이지만, 잉 브라우저 하지을 요청 이후 다운로드

header('Content-Disposition: inline; filename="downloaded.pdf"'); 

을하고 그것이를 나타내는 int을 추가 할 수 있기 때문에 그건 그렇고, 당신은 echo(readfile(...)) 싶지 않아 : 파일, 올바른 라인이 될 것이다 파일 크기 (php.net/readfile)

+1

물론 헤더는 파일의 내용 인쇄를 시작하기 전에 넣어야합니다. – 1ace

관련 문제