【问题标题】:PHP PDF download is not working properly in mobilePHP PDF下载在移动设备中无法正常工作
【发布时间】:2021-12-29 11:42:47
【问题描述】:

我正在 Codeigniter 4 中创建一个 Web 应用程序,用户可以在其中购买 PDF 书籍。付款后,用户将被重定向到可以直接下载 PDF 的页面。该页面没有任何用户界面。 PDF下载使用headers实现。 PDF 下载功能在 PC 上运行良好,但在移动设备上,文件正在下载为 HTML 文件。

例如:filename.pdf.html.

我的功能如下

public function download()
{
    $file_url = WRITEPATH . 'uploads/file.pdf';
    header("Content-type:application/pdf");
    header("Content-Disposition:attachment;filename=filename.pdf");
    readfile($file_url);
}

我已经搜索并尝试了几乎所有的解决方案。但是,这个问题在移动端并没有得到解决。

【问题讨论】:

  • 您说:“文件正在作为 HTML 文件下载”,但这应该意味着您在浏览器中看到了垃圾,对吗?不是 HTML,也不是解释的 HTML,只是奇怪的字符?或者你真的有东西要下载,但它是一个包含 HTML 代码的文件?!
  • @KIKOSoftware 这不是 HTML 代码。它是 PDF 文件本身,但它会自动重命名为 .html。一旦我重命名文件并在移动 PDF 查看器中打开它,我就可以查看原始 PDF。奇怪的是PC上的文件名是正确的。
  • 在 Android 谷歌 Chrome 上测试但没问题 - 完美运行。您使用的是什么网络浏览器?它可能与客户端相关。
  • @vee 相同。安卓谷歌浏览器。我已经在 3-4 部手机中进行了测试。还是一样。
  • 您可以尝试在单个文件上使用上面的代码(没有方法名称)。或者尝试使用headers_list() 列出已经响应的标头,以确保content-type 标头之前没有被修改和发送。如果下载完成并且不希望它继续处理任何内容,请不要忘记在readfile(); 之后添加exit();

标签: php codeigniter pdf download header


【解决方案1】:

解决了这个问题。 看起来 Codeigniter 在 readfile() 之后需要 exit() 函数 感谢@vee 提供的提示。

【讨论】:

    猜你喜欢
    • 2018-04-28
    • 1970-01-01
    • 2021-01-30
    • 1970-01-01
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-02
    相关资源
    最近更新 更多