-1

ユーザーがフォームを正常に送信した後、PDF ファイルをダウンロード可能にしようとしています。

この質問のコードを使用しましたが、pdf ファイルの内容は、ポップアップするダウンロード ダイアログではなく、gebrish 文字として出力されます。

ダウンロードコードは関数内から呼び出されます

function phpfmg_thankyou(){
    phpfmg_redirect_js();

    //include('get_file.php');
    $pdf_file = "{$_SERVER['DOCUMENT_ROOT']}/secured_assets/CRE_White_Paper_Release_01-15-2013.pdf";
    if( file_exists( $pdf_file ) ){
        header("Content-Type: application/octet-stream");
        header("Content-Disposition: attachment; filename=" . Urlencode('CRE_White_Paper_Release_01-15-2013.pdf'));   
        header("Content-Type: application/force-download");
        header("Content-Type: application/download");
        header("Content-Description: File Transfer");            
        header("Content-Length: " . Filesize($pdf_file));
        flush(); // this doesn't really matter.
        $fp = fopen($pdf_file, "r");
        while (!feof($fp)){
            echo fread($fp, 65536);
            flush(); // this is essential for large downloads
        } 
        fclose($fp);

    }

?>

<!-- [Your confirmation message goes here] -->
    <br>

    <div style="padding: 1em; background: #CDD7B6;">    
        <b>Your inquiry has been received. Thank you!</b>
        <p><a title="FREE White Paper Commercial Real Estate Expectations" href="secured_assets/CRE_White_Paper_Release_01-15-2013.pdf">Click Here</a> to get your FREE copy of White Paper Commercial Real Estate Expectations</p>
    </div>

<?php



} // end of function phpfmg_thankyou()

ここに画像の説明を入力

4

2 に答える 2

0

ご意見をお寄せいただきありがとうございます。送信後に別のページにリダイレクトし、そのリダイレクト ページ内にダウンロード コードを配置することで、これを解決できました。

于 2013-03-22T20:39:46.853 に答える
0

これは単なる推測ですが、PHP の HTML コードをすべて削除してみてください。

<!-- [Your confirmation message goes here] -->
    <br>

    <div style="padding: 1em; background: #CDD7B6;">    
        <b>Your inquiry has been received. Thank you!</b>
        <p><a title="FREE White Paper Commercial Real Estate Expectations" href="secured_assets/CRE_White_Paper_Release_01-15-2013.pdf">Click Here</a> to get your FREE copy of White Paper Commercial Real Estate Expectations</p>
    </div>

このようなコンテンツを追加すると、(私が思うに) クライアントは HTML が PDF ファイルの一部であると考えるようになります。PDFファイルは圧縮されているため、非標準のデータは、説明したように全体が意味不明になります。

ブラウザは、ファイルをダウンロードする前に表示していた元のページに自動的に戻ります (ファイルが自動的にダウンロードされるように設定されている場合)。

したがって、お礼が必要な場合は、"Thankyou" と表示された PHP ページを設定してから、ブラウザを実際のダウンロード PHP ページにリダイレクトすることができます。ダウンロードが行われると、Thankyou は引き続き表示されます。

私は間違いなくPHPのプロではないので、これについて間違っている場合はお知らせください.回答を削除します.

ファイルをダウンロードする前に、php ファイルを取得して、pdf ファイルであるかのように見せかけることをお勧めします。そうすれば、うまくいかない可能性のあるものが少なくなります。php で pdf ファイルを出力したら、既存のコードに適切なヘッダーを追加するだけで、自動的にダウンロードされます。

于 2013-03-22T19:34:15.573 に答える