PHP:尝试使pdf文件可下载
我尝试在用户成功提交表单后下载PDF文件 我使用了中的代码,但pdf文件的内容将作为gebrish字符输出,而不是下载对话框弹出 下载代码是从函数中调用的PHP:尝试使pdf文件可下载,php,Php,我尝试在用户成功提交表单后下载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
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()
函数phpfmg_thankyou(){
phpfmg_重定向_js();
//包括('get_file.php');
$pdf_file=“{$_SERVER['DOCUMENT_ROOT']}/secured_assets/CRE_White_Paper_Release_01-15-2013.pdf”;
如果(文件存在($pdf文件)){
标题(“内容类型:应用程序/八位字节流”);
标题(“内容处置:附件;文件名=“.Urlencode('CRE_White_Paper_Release_01-15-2013.pdf'));
标题(“内容类型:应用程序/强制下载”);
标题(“内容类型:应用程序/下载”);
标题(“内容描述:文件传输”);
标题(“内容长度:”.Filesize($pdf_文件));
flush();//这并不重要。
$fp=fopen($pdf_文件,“r”);
而(!feof($fp)){
echo-fread($fp,65536);
flush();//这对于大型下载非常重要
}
fclose($fp);
}
?>
您的询盘已收到,谢谢! 获取免费的商业地产期望白皮书
这只是一种预感,但请尝试删除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页面,上面写着“Thankyu”,然后将浏览器重定向到实际的下载PHP页面。当下载发生时,仍然会显示您的感谢
我肯定不是PHP专业人士,所以如果我在这方面有错,请告诉我,我会删除答案
在尝试下载该文件之前,我建议尝试让php文件假装它是pdf文件。这样可以减少出错的情况。一旦php输出pdf文件,您只需在现有代码中添加适当的标题即可自动下载。谢谢大家的支持输入。我可以通过在提交后重定向到另一个页面,并将下载代码放在重定向页面中来解决此问题。显示您在此处使用的代码。看起来您忘记发送/错误发送内容类型标题。例如,
标题(“内容类型:应用程序/八位字节流”)
您能给我们看一下您的代码吗?尤其重要的是,您要给我们看文件顶部和标题(…)之间的每一行(甚至是空白)
call。我假设你的标题无法发送,因为已经有输出了……我在pdf之后也看到HTML了吗?这个函数在哪里调用?文件肯定不是在这里被提供的。而且,既然HTML表明它链接到了正确的文件名,用户应该单击,为什么还要通过PHP提供文件?使用app仅适用于应用程序/八位字节流和应用程序/八位字节流。