当用户下载它时,在另一台服务器上重命名文件[2] - 使用PHP

时间:2009-02-12 13:41:43

标签: php http file redirect http-headers

我今天已经问过这个问题了,但这一次我想知道我是否可以通过PHP实现这一点,因为Javascript不适合它。

我有另一台服务器上的文件的链接。如果我向我的用户提供此链接,则会推出标题以从该服务器下载该文件。

我有没有办法捕获这些标题和文件并将下载重定向到用户?我想这样做,以便我可以更改下载的文件名,因为它是 总是'file.zip'。

这可以用PHP吗?

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

您可以使用curl将文件下载到服务器并正确提供(带Content-Disposition标题)。只要您使用HTTP,就无法只发送标头,让其他服务器直接将内容流式传输到客户端。

答案 1 :(得分:1)

你可以这样做,你可以用几种方式来做。

1)(简单)将文件复制到您的服务器,并重命名。将下载链接指向此副本。
2)(更难)创建一个存根php文件,称为,从php中的远程服务器读取文件,并将内容流式传输到脚本输出。这将需要您设置适当的标题等,以及设置您的Web服务器以通过PHP解析。

说真的,我选择选项1.(假设您有合法权利提供内容等)。

答案 2 :(得分:1)

也许你可以使用类似下面的脚本:

<?php
  header("HTTP/1.1 301 Moved Permanently");
  header("Location: http://www.example.com/the_path/file.zip");
  header('Content-Disposition: attachment; filename="alternate_filename.zip"');
  exit();
?>