코드에서 고려해야 할 몇 가지 사항이 있습니다.
먼저 해당 헤더를 올바르게 작성하십시오. 를 보내는 서버를 볼 수 없으며 Content-type:application/pdf
헤더는 Content-Type: application/pdf
공백이고 대문자로 시작합니다.
의 파일 이름 Content-Disposition
은 전체 경로가 아닌 파일 이름 뿐이며 필수인지 여부는 알 수 없지만이 이름은 "
not '
. 또한 마지막 '
이 없습니다.
Content-Disposition: inline
파일이 다운로드되는 것이 아니라 표시되어야 함을 의미합니다. attachment
대신 사용하십시오 .
또한 일부 모바일 장치와 호환되도록 파일 확장자를 대문자로 만드십시오. ( 업데이트 : 블랙 베리 만이 문제가 있었지만 세상이 그 문제에서 옮겨 졌으므로 더 이상 걱정할 필요가 없습니다)
모든 말은 코드가 다음과 같이 보일 것입니다.
<?php
$filename = './pdf/jobs/pdffile.pdf';
$fileinfo = pathinfo($filename);
$sendname = $fileinfo['filename'] . '.' . strtoupper($fileinfo['extension']);
header('Content-Type: application/pdf');
header("Content-Disposition: attachment; filename=\"$sendname\"");
header('Content-Length: ' . filesize($filename));
readfile($filename);
Content-Length
선택 사항이지만 사용자가 다운로드 진행 상황을 추적하고 다운로드가 중단되었는지 감지 할 수 있도록하려는 경우에도 중요합니다. 그러나 그것을 사용할 때 파일 데이터와 함께 아무것도 보내지 않도록해야합니다. 빈 줄이 아니라 <?php
앞뒤에 아무것도 없는지 확인하십시오 ?>
.
'
$filename='./pdf/jobs/pdffile.pdf';
이 줄에header("Content-Disposition:inline;filename='$filename");
누락 된 따옴표를 추가해보십시오 .