画像とかPDFファイルをリンクで開いたときPHPでダウンロードさせる方法

この記事需要無いかも(笑)

CSVとかZIPファイルをリンク先に設定するとブラウザで開かずにダウンロードが開始します。

画像やPDFのをリンク先に設定した場合は、リンクをクリックするとそのままブラウザで開きます。

 

画像やPDFの場合もダウンロード出来ないかなって思ったらPHPで簡単に出来ました。

画像とかPDFファイルをリンクで開いたときPHPでダウンロードさせる方法

上記PHPのファイル名をdl.phpとしましょう。

リンク元ページで、

のようにリンクを書くと、リンクをクリックしたときに「sample.pdf」がダウンロードされます。

サンプルコードの解説

コード内の 1. でダウンロードするファイルを指定します。

サンプルコードではファイル名だけ書いていますが、dl.phpと同じディレクトリにダウンロードファイルを置いたからです。

別ディレクトリにダウンロードファイルを設置した場合はパスも指定しましょう。

 

2. の Content-Type というのは、HTTP通信で何をサーバーから返してもらうかを定義するものです。

通常のWEBページを開く場合は text/html が設定されます。

これを application/force-download にすると、ダウンロードになります。

 

3. はレスポンスデータのサイズを指定します。

ファイルをダウンロードする場合は、ダウンロードするファイルのサイズを指定します。

 

4. はダウンロード時のファイル名を指定します。

1.でもファイル名を指定していましたが、1はどのファイルをダウンロードするか指定し、4.は何という名前でダウンロードするかを指定します。

 

そして、5.でファイルを読み込みます。

この5.ですが、ファイルサイズが大きいとサーバーのメモリがパンクするようです。

readfile() がファイル内容をいったんメモリに全て展開する関数だからです。

ちゃんと解決している記事がありましたのでそちらをどうぞ。

≫ 大容量ファイルをphpでダウンロードさせる方法

まとめ

画像やPDFをダウンロードさせたい場面てあるかどうか分かりませんが、Content-Typeを application/force-download にすることで対応できます。

その場合は、Content-Lengthでファイルサイズを指定することと、Content-Dispositionでダウンロードファイル名を指定することを忘れずに。

ファイルの読み込みは readfile() でなくても読み込めればOKです。

ただでかいサイズのファイルをダウンロードする場合はメモリが溢れる危険もあるので対策をしっかりしてください。

 

コロナの影響でみんな大変だから俺もなんかできること

僕は福井県に住んでいるのですが、戦時中に福井大空襲にあい、その直後に大震災にあってボロボロになった話をおばあちゃんに聞きました。

それでも復活することができ、不死鳥の町と言われるようになりました。

先人達には心から感謝し尊敬します。

リーマンショック、東日本大震災、コロナと数十年に一度と言われる被害が立て続けに起きていますが、僕たちは強いです。

今は苦しいかもしれませんがきっと復活できます。

僕は低学歴ですし小さな小さな粒でしかないですが、プログラミングに関しては必死に勉強し15年以上ごはんにありつけています。

プログラミングを勉強している人の役に立てるほどのスキルはあると思っています。

なので1人でもんもんと悩んでいる若手のエンジニア向けに質問を受け付けることにします。

自宅で待機されている間もパソコンとインターネットがあればプログラミングの勉強はできます。

  • PHP
  • SQL
  • HTML・CSS
  • jQuery

とは言ってもいきなり答えを聞いていたのではなかなか成長できないと思うのです。

なので質問の際には次のことをご連携ください。

  • 何をやりたいか
  • どんなことを調べたか、検索キーワードと参考にしたページのURL
  • 調べた結果どこが分からないか
  • できるなら試したコード

メッセージいはとりあえずTwitterにでもください。

質問はこちら

すぐに返事できないかもしれませんがご了承ください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA