0

Webサービスの戻りに問題があります。ヘッダーは次のようになります。

header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="'.$this->filename.".csv".'"');

私はデータを収集し、次のように返します。

    foreach($this->output_data as $each_table) {
        foreach($each_table as $each_row) {
            foreach($each_row as $each_key => $each_value){ 
                $string .= Sanitize::escape($each_value).$this->delimiter;
            }                              
            $string .= "\n";
        }            
    }
    print($string); 

ストリームとしてcsvファイルが戻ってくることを期待しています。しかし、返されるのは「FirefoxHTMLドキュメント」です。わかりません。

コントローラのビューレンダリングをすでにオフにしています。私に何ができる?

4

1 に答える 1

0

コントローラーまたはモデルからフォーマットされた文字列を単にエコーするのは適切な理由ではありません。使用する Response-Class があることがわかりました。以下のコード:

$this->response->header(array( 'Content-Disposition: attachment; filename="<filename.ext>"));
$this->response->type('application/text-csv');                     
$this->response->body(<returnData>);

必ず正しい「タイプ」を使用してください。

于 2014-03-26T12:49:41.730 に答える