【发布时间】:2011-08-21 10:51:16
【问题描述】:
我想允许用户下载 pdf 文件,下载代码如下....出于某种奇怪的原因,即使正在下载文件,我也收到一条错误消息,指出服务器上的文件已损坏。 ..有人可以帮助我并指出我在哪里犯了错误。
<php
$name = $_POST["name_first"];
$mail = $_POST['email'];
$number = $_POST['phone_number'];
$email_message = "first name: {$name} email is {$mail} number is {$number} ";
mail('fanaa@gmail.com', 'Form Response', $email_message);
if ($mail == "" OR $name == "" OR $number == "")
{
echo "Enter valid details ";
}
else
{
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="tokina.pdf"');
readfile('docs/tokina.pdf');
}
?>
【问题讨论】:
-
您可以将原始文件与下载的文件进行二进制比较,看看是否能找出问题所在。如果差异仅在前 2 个字节或后 2 个字节,我可能会提供帮助。
-
在执行的脚本中是否有其他输出,例如空格、
echo或其他什么? -
如果你的pdf文件没问题,也许你可以使用图书馆的电子邮件,例如swiftmailer.org
-
@KingCrunch 是的,这段代码实际上是 if 语句的一部分....我在您的查询后编辑了我的问题,请查看它
-
我怀疑存在 标签关闭问题。如果在脚本的开头或结尾有空格,在 标记之外,它们将被输出,导致数据损坏。或者,可能是内容长度问题:您是否尝试过添加如下行? header("内容长度:".filesise("tokina.pdf"));
标签: php download content-type