我有一个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) 但它始终在浏览器中打开文件而不是下载(当然是在已识别的文件扩展名上)
有什么想法吗?感谢
答案 0 :(得分:0)
使用重定向时,前面的标题可能无效。相反,您最好通过PHP而不是重定向来提供它们:
header("Content-type: octet/stream");
header("Content-disposition: attachment; filename=".$file);
header("Content-Length: ".filesize($file));
readfile($file);
但请注意,这将使用您自己的带宽。但是,没有任何方法可以强制远程主机上的行为。