0

バックグラウンド

特定のアドレスに電子メールで送信される Excel シートを生成しています。ローカルホストで完全に動作します(完全に保存されますが、ローカルメールサーバーが実行されていないため、メーリングをテストできません)。私がそれをホストすると、いくつかの問題が発生します。

どんな問題

私はそれをこの行に絞り込みました:

$this->PhpExcel->saveToDisk($path);

$path実行時に設定されるカスタム パスです。それを実行すると、ファイルがディスクに保存されますが、次のようになります。

ここに画像の説明を入力

これは、カスタム ヘルパー クラスの関数です。以下は、関数のコードです。

public function saveToDisk($path) {
    // set layout
    $this->_View->layout = '';
    // headers
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition: attachment;filename="'.$filename.'"');
    header('Cache-Control: max-age=0');
    // writer
    $objWriter = PHPExcel_IOFactory::createWriter($this->xls, 'Excel2007');
    ob_end_clean();
    $objWriter->save($path);
    // clear memory
    $this->xls->disconnectWorksheets();
}

しかし、ここに問題があります。ブラウザに出力すると、変更$objWriter->save($path);する$objWriter->save('php://output');とエラーが発生せず、ファイルが完全にエクスポートされます。

質問

エラーをグーグルで検索し、解決策を見つけるために最善を尽くしましたが、役に立ちませんでした。このエラーに関して入手できる情報の量は、驚くほど不足しているか、古くなっています。誰かが私が行方不明または間違っていることを教えてもらえますか?

4

2 に答える 2

0

ファイルをディスクに保存したとき、ファイルが正常に保存された、または電子メールが送信されたという単なるメッセージであっても、CakePHP はリクエストを行ったブラウザに何かを返すことを期待しています。正常に送信されました。ディスクに保存する場合、サーバーは Excel ファイルを返さないため、ヘッダーを送信したくありません。ヘッダーはありません。

于 2013-02-15T07:26:18.107 に答える
0

この行を削除して修正しました:

ob_end_clean();
于 2013-02-18T07:34:29.457 に答える