强制下载ftp://链接

时间:2013-07-08 07:12:02

标签: php http-headers nas force-download

我有一个PHP,通过FTP协议扫描远程NAS硬盘中的文件,生成一个json文件,然后通过javascript我在浏览器中列出这些文件。

当用户点击指向mp4,jpg和许多浏览器已知格式的链接时,浏览器会打开te内容而不是下载它。

现在,我知道使用PHP或.htaccess我可以更改标题以强制浏览器下载文件,但文件位于远程位置,只能通过FTP访问,因此我无法运行PHP或。 htaccess在其中。

我在PHP中试过这个标题变体:

header("Content-Type: application/octet-stream");
header("Content-Transfer-Encoding: Binary");
header("Content-Disposition: attachment; filename=\"$file\""); 

header("Content-Description: File Transfer"); 
header("Content-Type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=\"$file\"");

header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/image");
header("Content-Transfer-Encoding: binary");

全部以:

结尾
header("Location: $url");

(网址为ftp://user:password@dyndns.org/folder/file.mp4) 但它始终在浏览器中打开文件而不是下载(当然是在已识别的文件扩展名上)

有什么想法吗?感谢

1 个答案:

答案 0 :(得分:0)

使用重定向时,前面的标题可能无效。相反,您最好通过PHP而不是重定向来提供它们:

header("Content-type: octet/stream");
header("Content-disposition: attachment; filename=".$file);
header("Content-Length: ".filesize($file));
readfile($file);

但请注意,这将使用您自己的带宽。但是,没有任何方法可以强制远程主机上的行为。