-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

这只是一种预感,但请尝试删除 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 文件被压缩,任何非标准数据最终都会像你描述的那样把整个事情变成乱码。

浏览器会自动将您带回到下载文件之前的原始页面(如果文件设置为自动下载)

因此,如果您想要感谢,您可以设置一个 PHP 页面,上面写着“Thankyou”,然后将您的浏览器重定向到实际下载的 PHP 页面。下载完成后,仍会显示您的Thankyou。

我绝对不是 PHP 专业人士,所以如果我对此有误,请告诉我,我将删除答案。

在尝试下载文件之前,我建议尝试让 php 文件假装它是 pdf 文件。这样,可能出错的事情就会减少。让 php 输出 pdf 文件后,您只需将正确的标题添加到现有代码中即可自动下载。

于 2013-03-22T19:34:15.573 回答
0

谢谢大家的意见。我能够通过在提交后重定向到另一个页面并在该重定向页面中包含下载代码来解决这个问题。

于 2013-03-22T20:39:46.853 回答