【发布时间】: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