如何配置Apache2直接下载文件?

如何配置Apache2直接下载文件?

:-)

我有一台运行 Ubuntu Server 14.04 的服务器,上面运行着 apache2 网络服务器。我想为我和几个朋友建立一个个人网站,用于托管一些文件。我创建了该网站,一切运行顺利。为了测试文件托管,我在 /var/www/html 目录中创建了一个“test.txt”文件,并在页面上创建了指向该文件的链接。在文件中,我有以下字符串:

This is a test file.

但是,当我在电脑上单击浏览器中的链接时,文件并没有下载,而是出现在浏览器中的字符串“这是一个测试文件。”。在多个浏览器上进行了测试。有什么建议吗?我对网站托管还很陌生……我是不是忘了什么?提前谢谢。

-瑞安

答案1

您可以通过让 Apache 报告其内容类型为application/octet-stream而不是通常的 来强制下载它text/html。我不建议对.txt文件执行此操作。在您的.htaccess (或其他 Apache 配置文件)中添加:

AddType application/octect-stream .txt

另一种方法是在或块ForceType内使用,如FilesDirectory这个答案

<Files *.mp4>
  ForceType application/octet-stream
  Header set Content-Disposition attachment
</Files>

其优点是Files块的匹配标准比平原的匹配标准更灵活AddType

答案2

文本文件可以被 apache 读取并显示,但是您仍然可以使用浏览器保存该文件。

再试一次,使用另一个结尾,例如text.zip。甚至不需要是真正的 zip,更改结尾会改变行为。

个人说明:如果这些文件不对外公开,​​请务必使用 .htaccess 和用户/密码组合来保护您的服务器!

答案3

如果您需要将简单文本文件推送到浏览器中的客户端,则必须使用 php 之类的程序并index.php在根目录:/var/www/html 目录中创建一些文件,并添加如下内容:

<?php
$file = 'test.txt';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}
?>

恐怕您必须先在 apache 上安装 php 才能使用该代码。

我用谷歌搜索了一下,结果是这样的 ->sudo apt-get install php5

祝你好运,如果成功的话请告诉我。

相关内容