web-dev-qa-db-fra.com

Comment configurer Apache2 pour télécharger des fichiers directement?

:-)

J'ai un serveur sous Ubuntu Server 14.04 et le serveur Web Apache2 s'exécute sur celui-ci. J'aimerais avoir un site Web personnel pour moi et quelques amis pour héberger quelques fichiers. J'ai créé le site et tout se passe bien. Pour tester l'hébergement de fichiers, j'ai créé un fichier "test.txt" dans le répertoire/var/www/html et créé un lien sur la page du fichier. Dans le fichier, j'avais cette chaîne:

This is a test file.

Lorsque je clique sur le lien de mon navigateur sur mon ordinateur, toutefois, au lieu du téléchargement du fichier, la chaîne "Ceci est un fichier de test". apparaît dans mon navigateur. Testé sur plusieurs navigateurs. Aucune suggestion? Je suis très nouveau dans l'hébergement de sites Web ... y a-t-il quelque chose que j'ai oublié? Merci d'avance.

-Ryan

3
Lightn1ng

Vous pouvez le forcer à télécharger en indiquant à Apache que son type de contenu est application/octet-stream, au lieu du text/html habituel. Ce n'est pas quelque chose que je recommanderais de faire aux fichiers .txt. Dans votre .htaccess (ou d'autres fichiers de configuration Apache), ajoutez:

AddType application/octect-stream .txt

Une autre approche consiste à utiliser ForceTypedans un bloc Filesou Directoryname__, comme indiqué dans this SO answer :

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

L'avantage est que le critère de correspondance pour un bloc Filesest plus flexible que celui d'un simple AddTypename__.

2
muru

Un fichier texte peut être lu par Apache et sera lu et affiché par celui-ci. Vous pouvez néanmoins enregistrer le fichier avec le navigateur.

Réessayez, avec une autre fin comme text.Zip. N’ayant même pas besoin d’être un vrai Zip, changer de fin changera le comportement.

Sur une note personnelle: Assurez-vous de sécuriser votre serveur avec .htaccess et une combinaison utilisateur/mot de passe si ces fichiers ne sont pas destinés au public!

1
s1mmel

si vous avez besoin d'un fichier texte qui est un simple texte envoyé au client dans le navigateur, vous devez utiliser quelque chose comme php et en créer un pour ex. index.php dans le répertoire racine:/var/www/html et ajoutez quelque chose comme ceci:

<?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;
}
?>

Je pense que vous devrez d'abord installer php sur votre Apache pour pouvoir utiliser le code correspondant.

Je l'ai google-ed et c'est quelque chose comme ça -> Sudo apt-get install php5

Bonne chance, et laissez-moi savoir si cela a fonctionné ..

k

0
Kresimir Pendic