【问题标题】:header redirection issue标头重定向问题
【发布时间】:2012-12-21 21:11:55
【问题描述】:

我正在使用header(); 重定向到文件:http://ozonostudio.com/wp-content/uploads/downloads/2012/09/free.psd_.zip

header('Location: ' . $row[3]);

其中$row[3] 是来自SQL 的值。这适用于除 Safari 和 Opera 之外的所有浏览器。

在 Opera 中,它显示地址但不下载任何内容。我正在尝试从外部 URL 下载文件。用户使用表单将链接添加到我的数据库。

更新 /////////////////

原始网址是: http://ozonostudio.com/wp-content/plugins/download-monitor/download.php?id=3

Safari & Opera 显示文件地址,但浏览器不启动下载,这是怎么回事?

【问题讨论】:

  • 问题很可能出在文件下载本身。要了解如何强制下载,请参阅:stackoverflow.com/questions/7470846/…
  • 但是我可以用外部文件强制下载吗?并不是所有的文件都是 zip
  • 确保在header() 调用之前或之后没有向浏览器发送任何内容。最好在 Location 标头之后立即调用 exit;

标签: php redirect header http-redirect


【解决方案1】:

如果你的数据库值总是返回一个外部下载 url 在这种情况下你应该使用

header('Content-type: application/pdf'); 
OR header('Content-type: application/zip');

或所需的文件格式

【讨论】:

  • 这些标头与Location 重定向(302)无关。任何内容类型的标头都将在后续响应中设置
  • 我只是使用这个:$filename = $row[3]; $file_name = basename($filename); header("Content-Type: mime/type"); header("Content-Disposition: attachment; filename=$file_name"); header("Content-Length: " . filesize($filename)); readfile($filename); exit; 现在工作正常,我只需要创建一种方法来验证 URL
猜你喜欢
  • 2011-04-15
  • 2011-05-08
  • 2014-03-08
  • 1970-01-01
  • 2010-09-28
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多