- 締切済み
PHPでネット上のPDFファイルを保存
どこかのサイト上で公開されているPDFファイルを、絶対パスで指定して、ローカルPCにダウンロードさせたいと思っています(ファイル名はダウンロード先のファイル名のまま保存)。 これがPHPのプログラムで可能ならば、ソース例をご提示いただきたく、お願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
こんな感じでどうでしょう? <?PHP $filename="http://www.xxx/test.pdf"; $fp=fopen($filename,"r"); header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"".basename($filename)."\""); while(!feof($fp)){ echo fgets($fp,1024); } exit(); ?>
- yambejp
- ベストアンサー率51% (3827/7415)
構成がわからない どこかのサーバー:A PHPを運用するサーバー:B クライアントPC:C CはBを経由してAのPDFをダウンロードする・・・と考えればよろしいですか? であればBにAのファイルをファイルI/Oさせて、Bでダウンロード用の httpヘッダーをつけて出力させることになります。 ファイルの保存場所などを指定してダウンロードさせることは 仕組み上できません。
お礼
ご回答ありがとうございます。 >どこかのサーバー:A >PHPを運用するサーバー:B >クライアントPC:C >CはBを経由してAのPDFをダウンロードする 構成と処理の流れは上記のとおりで、AとBのサーバーは区別します。 >BにAのファイルをファイルI/O、Bでダウンロード用のhttpヘッダーをつけて出力 について、すみません…。こちらもう少し具体的に教えていただけないでしょうか。 AにおいてあるPDFファイルのURLをhttp://www.xxx/test.pdfと仮定して、処理用PHPファイルのソース例をご教示いただきたくお願いします。
お礼
ありがとうございます。 早速、PHPファイルを生成して、BのサーバにPHPファイルをおいてブラウザで実行してみたのですが、ディスプレイへの出力が文字化けしてしまいました。 試しに他のPDFファイルも指定してみたのですが、結果は同じく文字化けしてしまいました。 因みに、文字化けが解消されたとして、上記のサンプルコードはブラウザの画面にPDFの内容を出力する処理なのでしょうか? 保存先の指定は出来ないにしろ、CのクライアントPCまたはBのサーバに保存する、等は出来ないのでしょうか?