8796 sujets

Développement web côté serveur, CMS

Bonjour tout le monde.
Est-il possible de lancer le téléchargement d'un fichier ailleurs que sur le serveur qui exécute le script ?
Grâce aux headers par exemple ?

header("Content-Type: " . $type_du_fichier . "");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . $taille_du_fichier"");
header("Content-Disposition: attachment; filename= " . $nom_du_fichier . "");
header("Expires: 0");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
readfile($fichier);

Par exemple ici $fichier vaudrait "http://serveur_distant.fr/fichier.exe".
Si non, comment faire ?
merci d'avance pour votre aide.
Modifié par Piixel (10 May 2010 - 18:40)
Aucun problème. IL faut juste vérifier que l'option allow_url_fopen soit bien activée. C'est généralement le cas, mais certains hébergeurs la désactivent.
Pourtant lorsque j'essaie ce code :

<?php
$file = "http://skins.gmodules.com/ig/skin_fetch?fp=pgtnOA&type=2&sfkey=http://igcdn.googlecode.com/svn/trunk/images/travel_lpitaly/header1_bg.jpg";
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	</head>
	<body>
		Le téléchargement va débuter, veuillez patienter...
	</body>
</html>

Une fenêtre de téléchargement apparait mais une fois reçu, l’image ne fait qu’1ko et celle-ci est illisible.
quelqu'un aurait-il la solution please ?
Modifié par Piixel (11 May 2010 - 19:36)