【问题标题】:Unable to download file using readfile无法使用 readfile 下载文件
【发布时间】:2015-01-12 10:22:21
【问题描述】:

我尝试提供在 dwhandler.php 中处理的 pdf 文件下载。 所有这一切都应该做的是打开 pdf 文件或开始下载它。 我试过了:

<?php
header("Content-Description: File Transfer");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename='Paper.pdf'");
header("Cache-Control: must-revalidate");
readfile("Paper.pdf");
exit;
?>    

我也尝试了其他一些标题,但没有一个有效。

浏览器不断以一些奇怪的编码直接打开文件。这是前几行的图片: http://www.directupload.net/file/d/3865/h8waniq9_jpg.htm

有人知道为什么会这样吗?我不知道还有什么可以尝试...

非常感谢!

【问题讨论】:

    标签: php html pdf download readfile


    【解决方案1】:

    html 不是一个选项吗?我知道你可以通过简单地使用 html 5 来提供文件下载

    <a href="example.pdf" download>download not open it</a>
    

    看看:Forcing to download a file using PHP

    【讨论】:

    • 问题是我需要在开始下载之前发送一个 SQL 查询。所以我宁愿有一个额外的文件,我想不出任何真正令人满意的 html 解决方案。我想应该可以解决这个问题:/
    • 此外,该文件仅在登录后可用:/ 我查看了您的链接,虽然我已经尝试过但没有成功
    • 是文件只在登录时可用,还是页面?由于它是页面,因此您可以通过会话修复它。因为它仅适用于文件,所以您确实必须使用 php
    • 到目前为止,两者都没有,我踢掉了下载例程旁边的所有内容以检查它。虽然目标是 PHP 文件受会话保护并且 PDF 文件不可外部访问 -> 受 .htaccess 保护
    • 你查看我发给你的链接了吗?
    【解决方案2】:
    <?php 
    
        // Do your Sql query
        header('Location: http://host/files/pdf/file.pdf');   // redirect user to actualy location
    
    ?>
    

    【讨论】:

    • file.pdf 位于受 .htaccess 保护的目录中,所以我不能只是重定向。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多