2011-02-03 44 views
1

我想做到这一点,没有“ReadFile的()”部分:PHP(或Flash)文件下载 - 套头然后重定向

header("Content-type: application/force-download"); 
header("Content-Transfer-Encoding: Binary"); 
header("Content-length: ".filesize($file)); 
header("Content-disposition: attachment; filename="".basename($file)."""); 
readfile("$file"); 

基本上我想转发下载到另一个URL,但同时我需要能够设置标题,如“文件名”。

的ReadFile的($文件)功能将不能为我做的,因为在$文件不被存储在同一服务器作为PHP脚本(甚至不是同一个数据中心)

这甚至可能吗?如果不是通过PHP,也许FLASH可以做到这一点?

回答

1

用PHP这样做的唯一方法是PHP首先从远程服务器下载文件,然后将其发送给用户。实际上,您可以使用readfile,因为它支持fopen包装,只要在服务器上启用该选项即可。

+0

谢谢回答,我不想这个,因为我们正在谈论的文件可能大小为1GB ..我需要保存带宽。 – Gotys 2011-02-03 08:43:13

1

如果你真的想获得通过PHP以这种方式下载的文件,你可以使用

header("Content-disposition: attachment; filename=myfile.jpg"); 
    echo file_get_contents("http://host.tld/path/to/myfile.jpg") 

从拜伦 - 惠特洛克另一个报价SO质疑here。 他解释说这段代码会把文件放在临时存储器中,所以原始文件的下载和删除将自动处理。

如果你没有使用PHP,你可以使用一个隐藏的iFrame网页上下载文件

+0

如果我使用file_get_contents,服务器必须首先从原始目标下载1GB文件,然后将其推送到客户端。 Bandwith组合= 2 GB - 这就是我想要避免的。 – Gotys 2011-02-03 09:50:48