我希望我的用户下载文件 file.zip
来自
www.remoteurl/file.zip
但该文件应从
下载 www.mydomain.com/file.zip
我希望我的服务器充当代理,将远程URL更改为mydomain。 (注意:文件不应下载到我的服务器。)
你能为此建议一个好的方法,还是为此目的甚至还有完成的脚本?
答案 0 :(得分:1)
您的问题还不是很清楚,我认为您希望用户认为他们从您的服务器下载文件,而实际上下载位于远程服务器上。如果我的假设是正确的,有很多方法可以实现这一目标,这里有一个:
让我们说用户点击包含以下内容的链接:
http://www.yousite.com/myfiles/file.zip
首先,我们使用mod_rewrite将对myfiles
的任何请求转发给我们的phpscript(download.php
)。
<强>的.htaccess 强>
RewriteEngine on
RewriteRule ^myfiles/(.*)$ /download.php?file=$1 [NC]
现在,我们可以$_GET
file
download.php
的价值
<强>的download.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...