【问题标题】:Use header('location') to redirect to PDF files doesn't work使用 header('location') 重定向到 PDF 文件不起作用
【发布时间】:2017-11-06 15:18:29
【问题描述】:

我对 PHP 的 header('location: XXX') 函数有一个奇怪的问题。 我有一个为个人用途而构建的 URL 缩短网站,它的工作原理与任何其他服务(bit.ly、goo.gl)一样。它很好用,但我永远无法将它用于 PDF 文件。

例如,对于这个Example PDF file,我使用 bit.ly 来缩短它:http://bit.ly /29l4ueo(删除空格)

如您所见,无法访问该文件。链接好像有问题,为什么会这样呢?

我的网站也是如此。我使用以下行进行重定向:

header('Location: '.$long_url); 
exit();

它的作用类似于 bit.ly - 您无法打开 URL。你可以测试它here如果我点击它可以工作,但如果我在地址栏手动输入它就不能工作。

我是否可以包含任何特殊的标题,或者我可以对我的代码进行任何更改以使其与任何链接(包括 PDF 文件)一起使用?

谢谢!

edit: 似乎是 Chrome 的特定问题。如果您使用 Firefox、Edge 或 Opera,则不会发生这种情况。

【问题讨论】:

  • 您是否尝试指定内容类型? header("Content-type:application/pdf");
  • 是的。它没有效果。
  • 文件是内部的还是外部的?
  • 在所有情况下都是外部的
  • 它实际上在 Firefox、Opera 和 Edge 上完美运行,我猜你的问题是特定于 Chrome(或 Safari?)

标签: php google-chrome pdf header location


【解决方案1】:

给你:

header("Content-type:application/pdf");
// I used the first PDF I could find on the internet for the demo
readfile("https://www.rankya.com/assets/advancedSearchOperators.pdf");

要使用readfile,您需要确保allow_url_fopen 已启用。

另一种选择是刷新,在重定向之前显示一条消息:

header("refresh:3;url=https://www.rankya.com/assets/advancedSearchOperators.pdf"); 
echo 'You\'ll be redirected in about 3 secs. If not, click <a href="https://www.rankya.com/assets/advancedSearchOperators.pdf">here</a>.'; 

退出;

【讨论】:

  • 这对于他正在尝试构建的东西来说是很多开销。您的答案会读入 php 服务器中的文件,以将整个内容直接输出为文件。它不会将用户定向到实际的文件位置。
  • 你是对的,没有重定向,只是读取和输出文件:/
猜你喜欢
  • 2022-01-16
  • 2017-08-13
  • 1970-01-01
  • 1970-01-01
  • 2011-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-11
相关资源
最近更新 更多