2

データベースにクエリを実行し、結果を使用して csv ファイルを作成しています。次に、フロントエンド ページに、サーバー上に作成されたファイルへのリンクを次のように配置します。

function writetofile($stringData, $myFile) {
     $fh = fopen('download/'.$myFile, 'w') or die("can't open file");
     fwrite($fh, $stringData);
     fclose($fh);
}

$filename = $file."_".date("d-m-Y_H-i",time()).'.csv';

writetofile($seperator, $filename);
print 'Right-click on the link below and select "Save as":' . '<br/><br/>';
print 'Download File: <a href="/download/'.$filename.'" target="_blank">Download Link</a>'; 

何らかの理由で、ファイルをサーバーから直接ダウンロードすると、データベースのすべての行が正しく表示されます。しかし、ユーザーが行うこと、つまり右クリックして保存する手順を実行すると、ファイルにはこのページの html コードのみが含まれます。

4

1 に答える 1

5

更新http://php.net/manual/en/function.readfile.phpをご覧ください

適切な php ヘッダーを配置し、ファイルの内容を出力して終了します。

<?php // none space here
function writetofile($stringData, $myFile)
{
    if ( ! file_exists('download/' . $myFile))
    {
        echo 'file missing';
    }
    else
    {
        header('HTTP/1.1 200 OK');
        header('Cache-Control: no-cache, must-revalidate');
        header("Pragma: no-cache");
        header("Expires: 0");
        header("Content-type: text/csv");
        header("Content-Disposition: attachment; filename=$myFile");
        readfile('download/' . $myFile);
        exit;
    }
}

いずれにせよ、 http://php.net/manual/en/function.fputcsv.phpを調べて、正しい csv フォーマットを確認してください...

于 2012-12-31T22:06:19.437 に答える