如何强制下载文件?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (117)

我正在我的某个网站上的每个视频下方添加“下载此文件”功能。我需要强制用户下载文件,而不是仅仅链接,因为它有时会在浏览器中开始播放文件。问题是,视频文件存储在单独的服务器上。

任何方式,我可以强制在PHP下载?

提问于
用户回答回答于
$file_name = 'file.avi';
$file_url = 'http://www.myremoteserver.com/' . $file_name;
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary"); 
header("Content-disposition: attachment; filename=\"".$file_name."\""); 
readfile($file_url);
exit;

请注意,为了readfile能够读取远程URL,需要启用fopen_wrappers

用户回答回答于

测试的下载.php文件是

function _Download($f_location, $f_name){
  $file = uniqid() . '.pdf';

  file_put_contents($file,file_get_contents($f_location));

  header('Content-Description: File Transfer');
  header('Content-Type: application/octet-stream');
  header('Content-Length: ' . filesize($file));
  header('Content-Disposition: attachment; filename=' . basename($f_name));

  readfile($file);
}

_Download($_GET['file'], "file.pdf");

下载的链接是

<a href="download.php?file=http://url/file.pdf"> Descargar </a>

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励