web-dev-qa-db-ja.com

Apache2を設定してファイルを直接ダウンロードする方法は?

:-)

Ubuntu Server 14.04を実行しているサーバーがあり、Apache2 Webサーバーが実行されています。私と数人の友人がいくつかのファイルをホストするための個人的なウェブサイトが欲しいです。私はウェブサイトを作成し、すべてがスムーズに実行されています。ファイルホスティングをテストするために、/ var/www/htmlディレクトリに「test.txt」ファイルを作成し、ページにファイルへのリンクを作成しました。ファイルには、次の文字列が含まれていました。

This is a test file.

しかし、コンピューターのブラウザーでリンクをクリックすると、ファイルをダウンロードする代わりに、「これはテストファイルです」という文字列が表示されます。ブラウザに表示されます。複数のブラウザーでテスト済み。助言がありますか?ウェブサイトのホスティングは初めてです...忘れたことはありますか?前もって感謝します。

-ライアン

3
Lightn1ng

Apacheに、通常のapplication/octet-streamの代わりにtext/htmlのコンテンツタイプであると報告させることにより、ダウンロードを強制できます。これは、.txtファイルに対して行うことをお勧めするものではありません。 .htaccess(または他のApache構成ファイル)に以下を追加します。

AddType application/octect-stream .txt

別のアプローチは、 this SO answer で概説されているように、ForceTypeまたはFilesブロック内でDirectoryを使用することです。

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

利点は、Filesブロックの一致基準が、単純なAddTypeの一致基準よりも柔軟であることです。

2
muru

テキストファイルはApacheによって読み取られ、読み取られて表示されますが、ブラウザでファイルを保存することはできます。

text.Zipのような別のエンディングでもう一度やり直してください。実際のZipである必要はありません。末尾を変更すると動作が変わります。

個人的な注意事項:これらのファイルが一般向けでない場合は、.htaccessとユーザー/パスワードの組み合わせでサーバーを保護してください!

1
s1mmel

単純なテキストであるファイルをブラウザでクライアントにプッシュする必要がある場合は、phpなどを使用してex用に作成する必要があります。ルートの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

頑張って、うまくいったかどうか教えてください。

k

0
Kresimir Pendic