2013-03-07 83 views
-1

我有一个问题,我不知道是否有解决方案。隐藏主要下载网址

我的问题是,我有一个下载链接这样的:

http://remotewebsite.com/file.zip 

该文件是在其他网站上托管不是我的。 ,我想用户下载文件时不知道原始URL 像例如,当用户进入我的链接

http://mywebsite.com/file.zip 

它开始下载文件。

想象一下,就好像我是承载文件的网站和用户之间的隧道。 例如,每个来自远程网站的数据包用户请求都会经过我,然后发送给用户。

我不知道是否有另一种简单的方法来做到这一点。

我很抱歉,如果它听起来哑巴,但我真的希望它可以工作。

+1

可以使用Apache的代理功能来设置这样的隧道,但您需要对您的服务器进行根访问才能设置它们。 – 2013-03-07 16:48:10

回答

6

只需使用CURLfile_get_contents即可获取文件的内容,并使用相应的标头文件将其输出到浏览器。

header('Content-Description: File Transfer'); 
header('Content-Type: application/zip'); 
header('Content-Disposition: attachment; filename=file.zip'); 
header('Content-Transfer-Encoding: binary'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate'); 
header('Pragma: public'); 
ob_clean(); 
flush(); 
echo file_get_contents("http://remotewebsite.com/file.zip"); 
+0

非常感谢你的回答,但我是新手到PHP我会爱如果你能给我一个简单的代码。 – BOSS 2013-03-07 16:50:36

1

您可以使用URL重写机制路由到一个PHP脚本,将从远程服务器下载真正的文件,并将其投放到您的客户端的所有请求file.zip

如果你指定你使用的平台(Apache/IIS),我可以提供详细的例子来说明如何实现它。

对于IIS 7或更高版本,在您的web.config文件中使用此:

<configuration> 
<system.webServer> 
    <rewrite> 
     <rules> 
      <rule name="file.zip" patternSyntax="ExactMatch" stopProcessing="true"> 
       <match url="file.zip" /> 
       <action type="Rewrite" url="download_zip.php" /> 
      </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 
</configuration> 

"download_zip.php"使用PHP代码 “nauphal” 这里contirbuted。

+0

我有一个共享主机Apache和IIS – BOSS 2013-03-07 16:52:48