10

我试图让一个网站有一个强制下载 pdf 的按钮。

这是按钮的html:

    <a href=scripts/download.php>
    <input type="image" src="images/download.gif" alt="Submit button"/>
    </a>

到目前为止的php脚本:

    <?php
    header('Content-Type: application/pdf');
    header('Content-disposition: attachment;filename=documents/ECM_IT_ResumeDownload.pdf');
    readfile('documents/ECM_IT_ResumeDownload.pdf');
    ?>

这似乎可以很好地下载文件,但是当我打开它时出现此错误:

“Adobe Reader 无法打开 'documents_ECM_IT_ResumeDownload.pdf',因为它不是受支持的文件类型或文件已损坏(例如,它作为电子邮件附件发送且未正确解码)。”

任何帮助将不胜感激。

编辑 在文本编辑器中打开 pdf 并收到以下消息:


警告:readfile(documents/ECM_IT_ResumeDownload.pdf) [function.readfile]: 无法打开流:第4行的html/scripts/download.php中没有这样的文件或目录 ”

该文件肯定在那里。在 html/documents/ECM_IT_ResumeDownload.pdf

4

5 回答 5

25
$file_url = www.example.com/pdffolder/$pdfname;
header('Content-Type: application/pdf');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=".$pdfname);
readfile($file_url);
于 2013-02-28T11:01:32.243 回答
5

尝试删除文件的路径,并在内容中保留文件名:

header('Content-Type: application/pdf');
header('Content-disposition: attachment; filename=ECM_IT_ResumeDownload.pdf');
于 2012-05-14T02:19:53.307 回答
2

您是否尝试过去掉最后的 PHP 结束标记(?>)?它将页面视为纯 PHP 页面,删除任何可能意外附加到输出末尾的新行。当我动态创建 excel 文件以供下载时,这对我有帮助,并且它们下载时已损坏。查看此页面了解更多信息:

http://www.php.net/manual/en/language.basic-syntax.phptags.php

从您编辑的问题来看,PHP 似乎无法找到该文件。尝试使用文件的绝对路径,如下所示:“c:\blah\de\blah\bloo.pdf”或“c:/blah/de/blah/bloo.pdf”。如果其中一个路径工作并正确下载,则您的相对路径在某种程度上是不正确的。

于 2012-05-14T02:35:26.957 回答
0

我一直使用 Gowon Patterson 的下载脚本,它也有防盗链:http: //by.gowondesigns.com/getfile/

于 2012-05-14T02:42:36.640 回答
0

顺便说一句,有点晚了,但要在这里正确识别问题:

您的下载脚本位于scripts/download.php,您要下载的文件位于documents/[...].pdf

因此,您的readfile()函数应该遍历父目录(在 之外scripts/),例如readfile('../documents/[...].pdf');.

于 2013-07-09T20:23:42.467 回答