現在PHPにて、ボタン押下によりCSVファイルをダウンロードする機能を
作成していますが、ファイルは作成されているが、ダウンロードされません。
色々調べているのですが、解決策が見つかりません。
どなたかご助力をお願い致します。
PHP
1<?php 2/** 3 * CSV出力 4 */ 5 6// 必須ファイルをインクルード 7include_once('hogehuga.php'); // この中に、コネクション情報やら、検索のFunctionがいます。 8 9// コネクション実行 10global $serverName, $conInf; 11$conn = sqlsrv_connect($serverName, $conInf); 12 13$mainData = array(); 14$stmt = getHogeList(); 15while ( $row = sqlsrv_fetch_array($stmt) ) { 16 $hogeNo = $row['hoge_no']; 17 $hogeName = mb_convert_encoding($row['hoge_name'], 'UTF-8', 'SJIS-WIN'); 18 $hogeDate = $row['hoge_date']; 19 20 // 行追加 21 array_push($mainData, [$hogeNo, $hogeName, $hogeDate]); 22} 23sqlsrv_free_stmt($stmt); 24 25// コネクションクローズ 26sqlsrv_close($conn); 27 28// ファイルの生成 29$fileName = 'HogeFuga.csv'; 30$csvFile = 'TEMP_' .time() .rand() .'.csv'; 31$res = fopen($csvFile, 'w'); 32foreach($mainData as $line) { 33 mb_convert_variables('SJIS', 'UTF-8', $line); 34 fputcsv($res, $line); 35} 36fclose($res); 37 38// ダウンロード開始 39header('Content-Type: application/csv'); 40header('Content-Disposition: attachment; filename="' .$fileName .'"'); 41header('Content-Length: ' .filesize($csvFile)); 42readfile($csvFile); 43?>
csvファイルに書き込まれないのは、書き込むべきデータ(変数 $line)が空であるか、書き込むコード"fputcsv($res, $line);"が実行されていない、のいずれかだと思われます。 fputcsv($res, $line); の行の上に、$lineの内容を表示するコードを追加してみると、$lineが空か、fputcsvの行が実行されるかが確認できると思います。
回答1件
あなたの回答
tips
プレビュー