【问题标题】:pdf file saved as current page sourcepdf文件保存为当前页面源
【发布时间】:2015-10-07 05:14:44
【问题描述】:

我试图在我的网站上制作可下载的 pdf 文件,但我得到的只是当前页面源 (html)。 文件名正确,但文件本身没有下载。

我尝试了在 stackoverflow 上找到的各种修复,但没有帮助。

我在 htaccess 中尝试了 AddType application/octet-stream .pdf ,还有 ForceType。 在这里尝试了 php 修复: How to make PDF file downloadable in HTML link? 并通过 php:

header("Content-disposition: attachment; filename=filename.pdf");
header("Content-type: application/pdf");
readfile("filename.pdf");

然后链接到php文件,还是一样。

我做错了什么,您需要什么信息才能更好地理解这一点?

【问题讨论】:

    标签: php html .htaccess pdf download


    【解决方案1】:

    你可能有几个错误需要检查(和调试)试试这个

      <?php
         $file = ABSOLUTE_PATH_WHERE_PDF_IS_STORED.'/my.pdf'; //replace *ABSOLUTE_PATH_WHERE_PDF_IS_STORED* with your path
    
         if (file_exists($file)) {
             header('Content-Description: File Transfer');
             header('Content-Type: application/octet-stream');
             header('Content-Disposition: attachment; filename='.basename($file));
             header('Expires: 0');
             header('Cache-Control: must-revalidate');
             header('Pragma: public');
             header('Content-Length: ' . filesize($file));
             readfile($file);
             exit;
      } else {
          die("FILE [".$file."]" don't exists!");
      }
     ?>
    

    【讨论】:

    • 使用它会给出死亡响应,即文件不存在。
    • 更正:正确使用这段代码,第一次没有正确添加绝对路径,导致浏览器下载文件,该文件是一个html文件(准确的说是首页源码)
    【解决方案2】:

    所以我发现了问题,这当然很明显,我错误地链接到文件,并且由于我使用 cms 它发送了首页源(默认行为)。 特别是 html5 下载属性无论如何都不起作用。

    感谢 Donald123 和 PKa 的回答。

    【讨论】:

      【解决方案3】:

      您可以使用带有属性下载的标签

      <a href="path/to/file/*.pdf" download>Download this pdf</a>
      

      这是一种快速的方法。

      【讨论】:

      • 1) 下载是 html5 属性,并非所有浏览器都支持! 2)这不能解决OP的问题
      • 正如他在第一行所说的,他想让 pdf 文件可下载。我只是向他展示了一个简单的方法来做到这一点。
      • 使用 HTML5 或旧版本的只是链接到它会产生相同的输出。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-04
      • 1970-01-01
      • 2019-08-04
      • 1970-01-01
      • 2011-03-17
      • 2014-07-19
      相关资源
      最近更新 更多