Forcer le téléchargement d'un fichier simplement

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 545 fois - Téléchargée 17 fois

Contenu du snippet

Ce script permet de forcer le téléchargement d'un fichier.

La variable $exts_allowed est le tableau des extensions autorisées. Ne pas mettre les points.
Exemple valide : array ( 'mp3' , 'txt' );
Exemple invalide : array ( '.mp3' , '.txt' );

Source / Exemple :


<?php

// Extensions des fichiers autorisés à être téléchargés, à modifier. Sans les points.
$exts_allowed = array ( 'txt' , 'htm' , 'html' , 'phtml' , 'xhtml' , 'dhtml' );

//----------------------------------------------------
// MESSAGES D'ERREUR
//----------------------------------------------------

$msg [ 'no_file_to_dl' ]      =  'Aucun fichier à télécharger.';
$msg [ 'file_doesnt_exist' ]  =  'Le fichier que vous tentez de télécharger n\'existe pas.';
$msg [ 'file_not_allowed' ]   =  'Vous ne pouvez pas télécharger ce fichier.';

if ( isset ( $_GET [ 'file' ] ) )
{
	$file = trim ( $_GET [ 'file' ] );
	
	if ( @ file_exists ( $file ) )
	{
		$infos = pathinfo ( $file );
		
		if ( in_array ( $infos [ 'extension' ] , $exts_allowed ) )
		{
            @ header ( 'Content-Transfer-Encoding: binary' );
            @ header ( 'Content-Disposition: attachment; filename="' . str_replace ( ' ' , '_' , $file ) . '"');
            @ header ( 'Content-Length: ' . @ filesize ( $file ) );
            @ readfile ( $file );
		}
		else
		{
			echo $msg [ 'file_not_allowed' ];
		}
	}
	else
	{
		echo $msg [ 'file_doesnt_exist' ];
	}
}
else
{
	echo $msg [ 'no_file_to_dl' ];
}

?>

Conclusion :


Voila, pour forcer le téléchargement il faut rajouter la donnée GET file, exemple mon fichier se nomme download.php, il me suffit de taper :

http://.../download.php?file=Fichier_A_Telecharger.extension

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
mardi 8 mars 2011
Statut
Membre
Dernière intervention
13 janvier 2012

mon souci c'est ke,le fichier dont je veut telecharger est ke je ne connait pas son nom carps je les ai renomé.comment faire pour les telechargers?
Messages postés
8
Date d'inscription
vendredi 29 septembre 2006
Statut
Membre
Dernière intervention
9 mai 2009

saadi2009 je n'ai pas très bien compris ta question.

Tu veux dire comment ne pas montrer le "fichier.gif" (comme dans ton exemple) ?
Messages postés
8
Date d'inscription
vendredi 29 septembre 2006
Statut
Membre
Dernière intervention
9 mai 2009

Merci pous vos commentaires (qui datent lol).

A l'époque j'étais un noob de PHP, maintenant je maitrise mais je suis pas un encore un professionel.
Messages postés
1
Date d'inscription
mardi 6 janvier 2009
Statut
Membre
Dernière intervention
1 mai 2009

Merci bien pour le code, il est simple et fiable;
comment je cache le paramètre d'envoie parle href?
puisque les propriété de téléchargement afiche l'instruction complete
comme suite:
http://www.exemple.com/dossier/download.php?variable=fichier.gif
Messages postés
2
Date d'inscription
jeudi 9 décembre 2004
Statut
Membre
Dernière intervention
14 février 2008

Plutôt que d'exclure certains type de fichier, il serait plus prudent de n'autoriser que certains. (zip, jpg...) et effectivement, avec un répertoire en dur on est tranquille.
Afficher les 16 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.