我花了几天时间寻找使用php开始下载的解决方案,当然我确实找到了很多解决方案。不幸的是,他们都没有为我工作。无论出于何种原因,当我测试它并尝试开始下载时,它确实会显示我想要的文件,但是当我下载它时,无论它是什么类型的文件下载它都会下载为文本文件,其中包含我的网站的HTML
以下是我尝试的众多示例中的一个示例:
header("Content-Disposition: attachment; filename=\"" . basename($File) . "\"");
header("Content-Type: application/force-download");
header("Content-Length: " . filesize($File));
header("Connection: close");
答案 0 :(得分:3)
readfile()
功能。
<?php
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
?>
答案 1 :(得分:1)
不是尝试使用PHP提供文件,而是使用x-sendfile
标头将其移交给服务器。性能要好得多(特别是对于大型文件),服务器将处理必要的响应头。
有一个Apache mod,它内置于Lighttpd和Nginx(名称略有不同)。