(PHP) ファイルダウンロードの仕方

PHP

PHP

PHPでファイルをダウロードさせたい事があったので、

その覚書です。

スポンサードリンク

header関数を使う

ダウンロードさせるためにはheder関数を使います。

header('Content-Type:application/octet-stream');  //ダウンロードの指示
header('Content-Disposition:filename=download.txt');  //ダウンロードするファイル名
header('Content-Length:' . filesize('download.txt'));   //ファイルサイズを指定
readfile("download.txt");  //ダウンロード

1行目

header('Content-Type:application/octet-stream');

これは、Webブラウザはそれをダウンロードするかどうかを支持します。

2行目

header('Content-Disposition:filename=downloat.txt');

ダウンロードするファイルに名前を付けます。

この記述がないと、この内容が書かれているPHPファイル名になってしまいます。

3行目

header('Content-Length:' . filesize('download.txt')); 

ダウンロードしてる時のプログレスバーを表示するためです。

filesize関数の引数はファイルパスを指定します。

ファイルダウンロード

ファイルダウンロード

最近はこんなウインドウ見ない気がしますが・・・

4行目

readfile("download.txt");

実際にダウンロードします。

4行目のダウンロードの指示は

echo file_get_contents("download.txt");

でもいいようです。

違いは

file_get_contents関数 変数に一旦保存する
readfile関数 読み込むと同時に標準出力する

ファイルサイズが大きい場合、一旦変数に保存するfile_get_contentsは

memory_limitに引っかかってエラーになる可能性があります。

PHPExcel使ってた時にmemory_limitに引っかかってしまってたのは

これが原因かもしれません。

なのでいまはreadfile関数を使うようにしています。

(CakePHP2.x)Excel出力のためPHPExcelを設置してみる

(参考)
PHPでファイルをDLさせる際のPHPコード例

[PHP]file_get_contentsとreadfile

PHP7+MariaDB/MySQLマスターブック

新品価格
¥3,067から
(2019/9/21 06:20時点)

PHP7+MariaDB/MySQLマスターブック [ 永田順伸 ]

価格:3,067円
(2019/9/21 06:30時点)
感想(1件)

スポンサードリンク

コメントを残す

サブコンテンツ

このページの先頭へ