2

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

这是我尝试过的众多示例之一的示例:

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

2 回答 2

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;
?>
于 2013-06-27T23:09:03.613 回答
1

与其尝试使用 PHP 提供文件,不如将其与x-sendfile标头一起交给服务器。性能要好得多(尤其是对于大文件),服务器将处理必要的响应标头。

有一个Apache mod,它内置在 Lighttpd 和Nginx中(名称略有不同)。

于 2013-06-27T23:15:20.733 回答