2010-05-13 21 views
1

J'ai une page de téléchargement où j'ai gardé des musiques, des photos, des ebooks et etc. Quand l'utilisateur clique sur l'image, il l'ouvre, et les mêmes choses arrivent avec les fichiers .pdf si l'utilisateur a installé pdf reader sur son PC.Comment forcer l'utilisateur à télécharger un fichier, pas à le voir?

Je ne veux pas qu'ils ouvrent le fichier mais le téléchargent? Toutes les idées

+1

Plusieurs doublons. Rechercher "PHP force download" –

+0

duplication possible de [Forcer à télécharger un fichier en utilisant PHP] (http://stackoverflow.com/questions/1465573/forcing-to-download-a-file-using-php) –

Répondre

1

Vous devez ajouter un en-tête pour forcer le téléchargement.

header("Content-Disposition: Attachment") 
header("Content-Disposition: Attachment;filename=FILENAME_HERE") 

de http://www.symkat.com/force-download-with-http-headers

+0

Le lien vous posté ne fonctionne pas. Ou est-ce seulement moi qui a le problème? – etalon11

+0

Nop, c'est en baisse il semble. Changé l'url .. – Elph

+0

Pourriez-vous s'il vous plaît inclure les parties pertinentes dans votre réponse? À l'heure actuelle, il s'agit d'un message de lien seulement qui n'est pas vraiment approprié sur SO. – ThiefMaster

5
header('Content-disposition: attachment; filename=NAME_OF_YOUR_FILE'); 
0

Avec Apache mod_headers:

SetEnvIf Request_URI "([^/]+\.jpg)$" REQUESTED_FILE_BASENAME=$1 
SetEnvIf Request_URI "([^/]+\.mp3)$" REQUESTED_FILE_BASENAME=$1 
SetEnvIf Request_URI "([^/]+\.pdf)$" REQUESTED_FILE_BASENAME=$1 
Header set Content-Disposition "attachment; filename=\"%{REQUESTED_FILE_BASENAME}e\"" env=REQUESTED_FILE_BASENAME 

Les instructions peuvent être placées dans un fichier .htaccess qui lui-même doit aller dans le répertoire contenant vos fichiers multimédias. Vous utilisez à peu près n'importe quelle extension. La ligne suivante peut également aider contre les plugins agressifs:

Header set Content-Type "application/octet-stream" env=REQUESTED_FILE_BASENAME