Php 我想要一个像代理一样的下载

Php 我想要一个像代理一样的下载,php,.htaccess,Php,.htaccess,我希望我的用户下载一个文件,比如file.zip if(!EMPTY($_GET['file'])){ $url = 'http://www.remoteurl.com/'.$_GET['file']; $path_parts = pathinfo($url); $ext = $path_parts['extension']; $filename = $path_parts['filename']; header("Content-type: application/$ext"); heade

我希望我的用户下载一个文件,比如file.zip

if(!EMPTY($_GET['file'])){

$url = 'http://www.remoteurl.com/'.$_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);

}

但是文件应该从

 www.mydomain.com/file.zip
我希望我的服务器充当代理,将远程url更改为mydomain。(注意:该文件不应下载到我的服务器。)


你能提出一个好的方法吗,或者有一个完整的脚本吗?

你的问题不是很清楚,但是,我认为你希望用户认为他们正在从你的服务器下载一个文件,而实际上下载是在远程服务器上。如果我的假设是正确的,有很多方法可以实现这一点,这里有一个:

假设用户单击包含以下内容的链接:

首先,我们使用将对
myfiles
的任何请求转发到我们的phpscript(
download.php

.htaccess

RewriteEngine on
RewriteRule ^myfiles/(.*)$ /download.php?file=$1 [NC]

现在我们可以
$\u在
download.php中获取
文件
的值

下载.php

if(!EMPTY($_GET['file'])){

$url = 'http://www.remoteurl.com/'.$_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);

}

您可能希望根据文件扩展名限制下载,为此,您可以使用:

if (!EMPTY($_GET['file']) && preg_match('/\.(zip|txt|rar|tar|gz)$/', $_GET['file'])) {
//the rest of the code...

仍然有“absiceNeNe”?是的,PelDROLBITO…是的,你的假设是正确的。我想要相同的。如果我的答案帮助你,请考虑投票1 +,并接受它作为正确答案,点击在投票箭头中间的勾选,TKS!