如何使用服务器作为代理通过PHP下载文件?

如何使用服务器作为代理通过PHP下载文件?,php,proxy,download,Php,Proxy,Download,我需要我的服务器充当第三方服务器(文件最初所在地)和最终用户之间的代理。也就是说,我的服务器从第三方服务器下载文件,然后用户从我的服务器下载文件。这将导致产生两倍于文件大小的带宽。如何使用PHP实现此过程?非常简单,如下所示: $url = $_GET['file']; $path_parts = pathinfo($url); $ext = $path_parts['extension']; $filename = $path_parts['filename']; header("Cont

我需要我的服务器充当第三方服务器(文件最初所在地)和最终用户之间的代理。也就是说,我的服务器从第三方服务器下载文件,然后用户从我的服务器下载文件。这将导致产生两倍于文件大小的带宽。如何使用PHP实现此过程?

非常简单,如下所示:

$url = $_GET['file'];
$path_parts = pathinfo($url);

$ext = $path_parts['extension'];
$filename = $path_parts['filename'];

header("Content-type: application/$ext");
header("Content-Disposition: attachment; filename=$filename");

echo file_get_contents($url);
如果文件大于数兆字节,请使用fopen fread和frwrite将文件分块下载并分块发送到客户端

        $fp = fopen($url, 'rb');
        foreach (get_headers($url) as $header)
        {
            header($header);
        }

        fpassthru($fp);
        exit;

这只需将带有正确标题的远程文件下载到浏览器。

您可以使用
标题(“内容处置:附件;文件名=\”$filename\”如果你的文件名包含空格,这实际上是一个非常好的解决方案,缺点最少。确实,它在tin上所说的,以及op要求的,应该被接受。