1

ネストされた配列からcsvファイルを作成しています.localhostのcsvファイルへのダウンロードリンクで正常に動作しますが、ライブホストではダウンロードされません. これは私のphpファイルにあるものです:

宣言されたヘッダー:

/**
* Declare headers for CSV
 */
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=registration.csv");
header("Pragma: no-cache");
header("Expires: 0");

csv ファイルを出力する関数:

/**
* Function will output the scsv file
* @param the csv $data in nested array form array(array("","",""),array("",""...)...)
*/
function outputCSV($data) {
$outstream = fopen("php://output", "w");
function __outputCSV(&$vals, $key, $filehandler) {
    fputcsv($filehandler, $vals); // add parameters if you want
}
array_walk($data, "__outputCSV", $outstream);
fclose($outstream);
}

ローカルで使用したリンク:

<a href=".../csv/csv.php">Download CSV</a>

ライブ サイトでは動作しません。ダウンロードする代わりに、csv.php ページに移動し、配列を次のような文字列で出力します。

...ID,"コーチ 1","コーチ 2",勤務先,セル,メール,...

4

2 に答える 2

1

csv をコードにハードコーディングしてみてください。これらの行を、渡されるデータに不正な文字が含まれているかどうかを確認する必要がある行に置き換えます。文字セットを指定すると役立つ場合があります。

header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=data.csv');
$output = fopen('php://output', 'w');
fputcsv($output, array('Column 1', 'Column 2', 'Column 3'));

ここで説明されているように:

http://code.stephenmorley.org/php/creating-downloadable-csv-files/

于 2012-12-20T17:20:50.093 に答える
0

私はあなたのコードを実際にデバッグするように設定していません。必要に応じて、これを試すことができます。私はそれが機能することを知っています。

$out = fopen("php://temp", 'r+');
while (($row = $res->fetch(Zend_Db::FETCH_NUM)) != false) {
    fputcsv($out, $row, ',', '"');
}                       
rewind($out);
$csv  = stream_get_contents($out);
header("Content-Type: application/csv;");
header("Content-Disposition: attachment; filename=\"foo.csv\"");        
header("Pragma: no-cache");
header("Expires: 0");        
echo $csv;
exit(0); 

必要に応じてループを調整して、結果を繰り返します。

于 2012-12-20T17:20:59.430 に答える