0

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

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

现在,我知道使用 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)但它总是在浏览器中打开文件而不是下载(当然是在识别的文件扩展名上)

有任何想法吗?谢谢

4

1 回答 1

0

使用重定向时,以前的标头可能不起作用。相反,您最好通过 PHP 为它们提供服务,而不是重定向:

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

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

于 2013-07-08T08:05:47.757 回答