1

わかりました、それで私は見つけることができるPHPWordクラスに問題があります:http://phpword.codeplex.com

奇妙なことに、「example」ファイルでこれと同じコードを使用すると、生成に問題なく機能します。ヘッダーを使用してダウンロードを強制しない場合、ファイルは正常に開きます。ただし、ヘッダーでこのコードを使用すると、ダウンロード時にファイルが破損していて開くことができないというエラーがワードファイルにスローされますが、正常に開きます。

public function export()
    {
            // Load PHPWORD Library
            $this->load->library('PHPWord');
            $sec = $this->phpword->createSection($secStyle);

            $header = $sec->createHeader();
            $header->addWatermark('images/CC_watermark.png', array('marginTop'=>1015, 'marginLeft'=>-80));

            $resultSelected = $this->input->post('cbox');
            foreach($resultSelected as $row)
            {
               $sec->addText($row);
               echo $row."<br>";
            }

            $fileName = "Plan_Generate_".date('Ymd').".docx";

            // Force Download
            $filePath = $fileName;

               $fileName = basename($filePath);
               // $fileSize = filesize($filePath);

               // Output headers.
               header("Cache-Control: private");
               header("Content-Type: application/stream");
               // header("Content-Length: ".$fileSize);
               header("Content-Disposition: attachment; filename=".$fileName);

               // Output file.
               // readfile ($filePath);
               // exit();


            // Save File
            // $fileName = "files/SomethingNew_".date("Ymd").".docx";
            $objWriter = PHPWord_IOFactory::createWriter($this->phpword, 'Word2007');
            $objWriter->save('php://output');
    }

これは、ファイルを生成しようとするときに使用しているコードです。私が抱えている問題は、ダウンロードを強制しようとするとエラーが発生することです。助けてくれてありがとう!質問を完全に理解していない場合は、質問してください。

アップデート:

これが私が受け取っているエラーの画像です。迅速な対応に感謝します。実際にCodeignitersの方法でTommを試してみます。朝。

単語エラー

4

3 に答える 3

2

CodeIgniters関数を介してヘッダーを設定する必要があります。これが、問題の原因となる可能性があります。

CI出力クラス

$ this-> output-> set_header();

サーバーヘッダーを手動で設定できます。サーバーヘッダーは、最終的にレンダリングされた表示を出力するときに出力クラスから送信されます。例:

$this->output->set_header("HTTP/1.0 200 OK");
$this->output->set_header("HTTP/1.1 200 OK");
$this->output->set_header('Last-Modified: '.gmdate('D, d M Y H:i:s', $last_update).' GMT');
$this->output->set_header("Cache-Control: no-store, no-cache, must-revalidate");
$this->output->set_header("Cache-Control: post-check=0, pre-check=0");
$this->output->set_header("Pragma: no-cache"); 

私の仮定では、PHPの方法でヘッダーを更新しようとしていますが、出力にはCIルールに従っています。

于 2011-08-31T16:07:26.753 に答える
1

これは、CIを使用して修正されました$this->download->force_download()

そして、、、を介してデータを渡すことによって、そしてob_start()それob_get_contents()ob_end_clean()手伝う必要がある人々のために。

于 2012-10-12T03:36:16.070 に答える
0

本当にしたくないですか

 header("Content-Type: application/octet-stream");

ストリームだけでなく?実際のエラーは何ですか?エラーをスローしているのは単語またはブラウザまたはPHPですか?

また、CodeIgniterにはファイルを送信するためのダウンロードヘルパーがあります...あなたはそれを試してみたくなるかもしれません。 http://codeigniter.com/user_guide/helpers/download_helper.html

于 2011-08-31T17:10:01.833 に答える