如何使用php开始下载

时间:2013-06-27 23:03:48

标签: php

我花了几天时间寻找使用php开始下载的解决方案,当然我确实找到了很多解决方案。不幸的是,他们都没有为我工作。无论出于何种原因,当我测试它并尝试开始下载时,它确实会显示我想要的文件,但是当我下载它时,无论它是什么类型的文件下载它都会下载为文本文件,其中包含我的网站的HTML

以下是我尝试的众多示例中的一个示例:

header("Content-Disposition: attachment; filename=\"" . basename($File) . "\"");
header("Content-Type: application/force-download");
header("Content-Length: " . filesize($File));
header("Connection: close");

2 个答案:

答案 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(名称略有不同)。