Posted on

公開フォルダーにないPDFファイルを表示する方法

PDFファイルアップロードの機能を作成する場合、公開フォルダでない場所にアップロードして、
そのPDFファイルをaタグで別タブに表示したい場合があります。
そこで、その場合のサンプルを記載します。

ファイル名やIPアドレスはご使用の環境にあわせてください。
main.php(表示したいファイルをフルパスでGETで渡す。)

  1. <!--?php   
  2. $path = "/var/www/tmp/hoge.pdf";  
  3. $fileDate = date("YmdHis",filemtime($path));  
  4. ?-->  
  5. <!-- ファイル名だけだと簡単なファイル名の場合予想されて他のファイルを見られる可能性があるためファイルを作成した日時をチェックし安易に -->  
  6. <!-- ファイルにアクセスできないようにしています。 -->  
  7. <a href="http://255.255.255.255/pdfdisp.php?pdfdisp=<?php echo $path ?>&pdfdate=<?php echo $fileDate; ?>" target="_blank">download</a>  

表示したいフォルダのファイルをオープンしてPDFとして表示させるためのphpファイル
pdfdisp.php

  1. <!--?php  
  2. // ファイル名とファイル作成日時がともに指定されていて、作成日時が同じ場合に表示する。  
  3. if(isset($_GET['pdfdisp'])&&isset($_GET['pdfdate'])){  
  4.     $fileDate = date("YmdHis",filemtime($_GET['pdfdisp']));  
  5.     if ($_GET['pdfdate'] == $fileDate) {  
  6.         $pdf = file_get_contents($_GET['pdfdisp']);  
  7.         header("Content-Type: application/pdf");  
  8.         echo $pdf;  
  9.         exit();  
  10.     }  
  11. }  
  12. ?-->  

以上です。試してみてください。