我正在尝试在用户成功提交表单后下载PDF文件。
我使用了this question中的代码,但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()
答案 0 :(得分: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页面,上面写着“Thankyou”,然后将浏览器重定向到实际下载的PHP页面。下载发生时,仍会显示您的Thankyou。
我绝对不是PHP专家,所以如果我错了,请告诉我,我会删除答案。
在尝试下载文件之前,我建议只是尝试让php文件假装它是一个pdf文件。这样可以减少可能出错的事情。一旦你输出了一个pdf文件,你只需要在现有代码中添加正确的标题,使其自动下载。
答案 1 :(得分:0)
谢谢大家的投入。我能够通过在提交后重定向到另一个页面来解决这个问题,并将下载代码放在该重定向页面中。