【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    更新日:2019-01-17

[スポンサーリンク]

関連記事
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
サイト内検索
プロフィール

プロフィール

[Name : じゃぶじゃぶ(@jbjb_2019)]
都内で社内SEをしているおじさん。
仕事で得られる知識だけでは限界を感じ、 WEBの勉強がてらITブログを開始。
サーバからWEBサイトまでフルスクラッチで開発しました。
現在は勉強のモチベーションを保つために活用中。
興味があることを雑記的に書いていきます。

[スポンサーリンク]

[スポンサードリンク]

最近の記事