TYBMHI Posté 28 Septembre 2008 Partager Posté 28 Septembre 2008 Bonjour à tout le monde Sur mon site j'ai mis en place des fonds écrans. Donc j'affiche une petite miniature avec en dessous le lien "télécharger" . Ça marche super bien sur firefox. Sur IE ça ouvre la fenêtre qui demande de télécharger, on valide mais ça ne télécharge que 0 octet et donc le fichier téléchargé est inexploitable. voici le lien : <a href="envoi_image.php?filename=http://www.monsite.net/telecharger/fondecran/1024x768/fondecran1p.jpg"> télécharger</a> voici le fichier envoi_image.php : <?phpif (isset($_GET["filename"])){$filename=$_GET["filename"];// ne conserver que le nom du fichier : le nom que verra s'afficher l'utilisateur$uploadname=basename($filename);// Envoi du fichierheader('Content-Transfer-Encoding: none');header('Content-Type: application/octetstream');header('Content-Disposition: attachment; filename="'.$uploadname.'"');header('Content-length: '.filesize($filename));header("Pragma: no-cache");header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");header("Expires: 0");readfile($filename) OR die();}?> Merci pour votre aide Lien vers le commentaire Partager sur d’autres sites More sharing options...
Kioob Posté 28 Septembre 2008 Partager Posté 28 Septembre 2008 Hello, essaye d'enlever le Content-length éventuellement. Pour peu que la compression soit activée, l'info est fausse. Sinon plusieurs trucs me gênent : - pourquoi utilises tu une adresse en "http://" pour pointer l'image local ? Tu cherches à saturer le plus vite possible ton serveur Apache ? - si je remplace ce paramètre filename par le nom de ton fichier de config, je vais aussi récupérer tes identifiants d'accès MySQL, rigolo non ? - pourquoi diable désactiver toute mise en cache ? Surtout pour un site de fond d'écran où la bande passante est souvent un problème. - sur tes entêtes, tu mets un domaine "no-cache" et la ligne d'après tu le remplaces par un domaine "public"... tu veux lequel en fait ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
TYBMHI Posté 28 Septembre 2008 Auteur Partager Posté 28 Septembre 2008 Je te remercie de ton aide. J'ai retirer le Content-length et maintenant ca marche nikel. Pour tout le reste, si tu as des améliorations à faire au script je suis preneur car je débute en PHP. Encore merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Kioob Posté 28 Septembre 2008 Partager Posté 28 Septembre 2008 Déjà pas besoin du "http://" dans les liens : <a href="envoi_image.php?filename=1024x768/fondecran1p.jpg"> télécharger</a> Ensuite du coté du script d'envoi, il faut un minimum de vérification pour s'assurer qu'il s'agisse bien d'un fichier autorisé : <?php$error = false;if(!isset( $_GET['filename'] ) ) $error = true;else { $filename = $_GET['filename']; $basename = basename( $_GET['filename'] ); $dirname = dirname( $_GET['filename'] ); $dossiersAuthorises = array( '1024x768', '800x600', '[a completer]' ); if(!in_array( $dirname, $dossiersAuthorises ) ) $error = true; $filename = '/chemin/a/completer/' . $dirname .'/'. $basename;}if($error){ echo "grosse erreur !!!!"; exit;}//header('Content-Transfer-Encoding: none');header('Content-Type: application/octetstream');header('Content-Disposition: attachment; filename="'.$basename.'"');header("Cache-Control: must-revalidate, public, max-age=7200");header("Pragma: public");header("Expires: 7200");readfile($filename); Le header que j'ai mis en commentaire, c'est juste parce que de tête je ne me soucis pas de son utilité. Donc à vérifier. Pour le cache, il n'y a aucune gestion ici, si ce n'est un mini "expires" de 2 heures. Mais il me semble en avoir déjà discuté sur ce forum, si tu fais une recherche sur ETag ou Last-Modification tu devrais retrouver le sujet en question. Lien vers le commentaire Partager sur d’autres sites More sharing options...
TYBMHI Posté 29 Septembre 2008 Auteur Partager Posté 29 Septembre 2008 Merci mille fois de ton aide. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant