【发布时间】:2011-12-18 09:26:31
【问题描述】:
我已经使用 SO 很长时间了,但我终于遇到了一个我找不到答案的问题。我想使用我的站点将用户重定向到托管在另一台服务器上的文件。起初我认为“这应该很容易”:
header("Location: $url")
但是,托管在其他服务器上的文件只有一个 uuid 作为文件名,所以我想使用标头传递适当的 mimetype 和文件名(我会知道的)。我可以使用以下代码来做到这一点:
<?php
$filename = $_REQUEST["name"];
$filesize = $_REQUEST["size"];
$mimetype = $_REQUEST["mime"];
$url = $_REQUEST["url"];
// used to test
$filename = "example.txt";
$filesize = "2966";
$mimetype = "text/plain";
$url = "http://example.com";
header('Content-Type: ' . $mimetype);
header("Content-length: " . ($filesize + 0));
header('Content-Disposition: attachment; filename="' . $filename . '"');
// this just redirects to the page, ignoring the Content- headers
//header('Location: ' . $url);
// this works, but I suspect that it uses my server's bandwidth
readfile($url);
exit();
?>
我上面发布的方法确实为用户提供了下载,但它不是通过我自己的服务器传递下载吗?我可能会用这个下载很多文件,如果我不需要的话,我宁愿不使用自己的带宽。我意识到这可能是不可能的,但我很感激任何见解。
【问题讨论】:
-
如果您从服务器设置标题,那么内容必须以相同的方式出现,因此它必须使用您的带宽
-
正如您所怀疑的那样。
readfile()调用会消耗您端的带宽,并且通过重定向将 HTTP 阅读器强加于外部资源是不可能的。除非您找到执行此操作(并提供带宽)的外部服务,否则这里没有解决方法。 -
sigh 我也是这么想的。谢谢大家。
-
我能想到的都删了
-
你可以自己回答;)
标签: php file http-headers mime-types bandwidth