Page 1 sur 1

Telechargement de fichier : Nom incorrect

Posté : 04 janv. 2006, 15:14
par Mig28
Salut à tous !

J'utilise le code suivant, placé dans un fichier telecharger.php :

Code : Tout sélectionner

header('Content-Type: application/pdf;'); header('Content-Disposition: attachment; filename="toto.pdf"); header('Pragma: public'); header("Cache-Control: no-cache, must-revalidate"); header('Content-Transfer-Encoding: binary'); header('Content-Length: '.filesize('c:/toto.pdf')); flush(); readfile('c:/toto.pdf');
Ce code fonctionne très bien en php4, cependant lorsque je l'utilise sous php5, le nom qui m'est proposé est "telecharger.pdf"... Il ne tient vraissemblablement pas compte du nom que je lui donne.

J'essaie de faire le tour, mais je ne sais pas vraiement sur quoi cibler mes recherches : paramètrage php ou apache, problème de script... Ca fait 3 jours que je suis dessus, et la seule solution que j'ai trouvé c'est de faire le téléchargement en php4... Pas top quand l'objectif est de migrer une application de php4 à php5...

Merci d'avance pour l'aide que vous pourrez m'apporter.

Posté : 04 janv. 2006, 15:46
par reMig28
Bon vraissemblablement, suite à un n-ième essai, ça ne vient pas de php5 (en opposition à php4)... Avec un essaie simple, ça fonctionne aussi... :oops: désolé...

Cependant lorsque j'incorpore ce petit bout de code dans l'application, ça ne fonctionne plus... Voilà en gros le shéma :
J'appelle une page avec un identifiant de document. Je recherche le document correspondant. Pour ce document, j'appelle sa méthode "telecharger". Dans cette méthode, je fais les modification nécessaires sur un fichier, puis appelle une fonction statique "telecharger", dont voici le code :
class Header
{
	/*
	* Crée les header pour le téléchargement
	*/
	public static function Telecharger($filename, $nom, $extension, $header_application) {
		if(!headers_sent() && file_exists($filename))
		{						
			$fichier = realpath($filename);
			$Nom = Chaine::Supprime_Accents(str_replace(" ", "_", $nom));
			header('Content-Type: '.$header_application.'; name='.$Nom.'.'.$extension);				
			header('Content-Disposition: attachment; filename='.$Nom.'.'.$extension);
			header('Pragma: public');
			header("Cache-Control: no-cache, must-revalidate");
			header('Content-Transfer-Encoding: binary');			
			header('Content-Length: '.filesize($fichier));	
			flush();
			readfile($fichier);
		}
	}
}
Je suis preneur de toutes vos idées. Parce que là tout seul, c'est plus de la brasse...