【PHP】ファイルダウンロードのサンプルソース
-
カテゴリ:
- PHP
前回の記載した「【PHP】ファイル読み込み処理をまとめてみた」の流れで、PHPでファイル出力のサンプルを作成しました。
よくWEB上でダウンロードボタンを押して、「ファイルをダウンロードしますか?」みたいなダイアログが出るアレです!
今回はサーバ上にあるファイルを出力するサンプルと、ファイルをサーバ上に作成せずに直接出力するサンプルの2つを作成しました。
【超概要】
- ファイルダウンロードのサンプルソースをご紹介
- 既存ファイルのダウンロードとファイル作成無しでのダウンロードの2種類
作成済みのファイルをダウンロード
<?php
$file_path = './sample.csv';
// HTTPヘッダ設定
// ファイルを強制ダウロードする場合↓
// header('Content-Type: application/force-download');
// ファイルの種類は気にしない場合↓
header('Content-Type: application/octet-stream');
header('Content-Length: '. filesize($file_path));
header('Content-Disposition: attachment; filename*=UTF-8\'\'' . rawurlencode($file_path));
// ファイル出力
readfile($file_path);
?>
ファイルを作成せずに直接ダウンロード
<?php
$file_path = 'sample.csv';
$list_data = array (
array('aaa', 'bbb', 'ccc', 'dddd'),
array('123', '456', '789'),
array('"aaa"', '"bbb"')
);
// HTTPヘッダ設定
header('Content-Type: application/octet-stream');
header('Content-Length: '. filesize($file_path));
header('Content-Disposition: attachment; filename*=UTF-8\'\'' . rawurlencode($file_path));
// ファイル出力
// ファイルパスを指定せず、「php://output」に出力することで一時ファイルを作成せずに書き込み可能
$fp = fopen('php://output', 'w');
//foreachでライン毎にfputcsvでCSV出力
foreach($list_data as $line){
fputcsv($fp, $line);
}
fclose($fp);
exit;
?>
投稿日:2018-07-25
更新日:2020-10-15