0

ダウンロード用のPDFドキュメントを作成しています。たとえば、誰かがPDFリンクをクリックすると、PDFが生成され、ブラウザはそのPDFファイルのパスを含む新しいウィンドウを開きます。問題は、ブラウザがそのファイルの作成後約40〜50秒間、404 NOT foundエラーを表示していることですが、その後ブラウザを更新すると、そのファイルは表示またはダウンロード用に存在します。

1つのpdfリンクはhttp://images.myvouchercodes.co.uk/mvclocal/pdf/ca3b5098-9b35-7d8e.pdf で、ファイルを表示できますが、同じURLでは作成直後に404が見つかりません。私はファイルを書くために次のコードを使用しています

      try{
            $fh = fopen($filename, "w");                        
            $contents = $this->render();   // return pdf contents in string        
            if(fwrite($fh, $contents))
            {           
                $fh = fopen($filename, "r");                    
                while(strlen(file_get_contents($filename)) !=  strlen($contents))
                { }
                echo $filename;
            }
            else
            {
                throw new Exception ("Unable to create pdf");
            }
            fclose($fh);

        }
        catch(Exception $e)
        {
            echo $e->getMessage();
        }

その呼び出しはajaxであり、pdfの完了時にファイル名をエコーし​​ます。次にこのファイル名がurlに追加され、window.open()を使用してpdfリンクで新しいウィンドウを開きます。これにより404notfoundエラーが発生します。このエラーが発生している理由を誰かが知っていますか?

4

2 に答える 2

1

まず、Zendpdfの問題なのか一般的なWebサーバーの問題なのかを特定する必要があります。ダミーの1バイトファイルを手動で作成して、同じ遅延が表示されるかどうかを確認してください。

それらはあなたのウェブサーバーの設定次第です-いくつかは積極的なファイルシステムプロパティのキャッシュを持っているかもしれません、それで普遍的な答えはありません、あなたは対応する設定オプションをチェックする必要があります。

于 2010-08-24T10:30:45.753 に答える
1

ブラウザでPDFを直接出力するためにphpヘッダーを使用する

$contents = $this->render();
header('Content-type: application/pdf');
header('Content-disposition: inline; filename=nijman.pdf');
header('Content-length: ' . strlen($contents));
echo $contents;

したがって、ajaxを実行する代わりに、PDFコードの作成のURLを使用して新しいウィンドウを開きます。

于 2010-08-25T10:08:43.073 に答える