problème de téléchargment de fichier

problème de téléchargment de fichier - PHP - Programmation

Marsh Posté le 01-04-2004 à 09:19:44    


 
Bonjour tout le monde,
 
Voila, j'ai un petit soucis, je suis en train de créé une application web avec laquelle à un moment donné le client connecté aura la possibilité de télécharger un fichier. Donc j'ai créé un lien sur lequel il peut cliquer mais le problème c'estr qu'au lieu de télécharger le fichier en question, il me télécharge le source du lien. ???????????
 
Quand je teste en local, il me télécharge le bon fichier mais quand je le teste via une autre machine ca ne marche pas
 
Voici le code source du lien
 
 
 
<html>
<head>
<title>Forcer le téléchargement d'un fichier</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
 
<?php
 
// Test du téléchargement d'un fichier avec reconnaissance du type de fichier  
echo "<a href=\"telecharger.php?Fichier_a_telecharger=donnees6.txt&chemin=./ \">Télécharger</a>";
?>
 
</body>
</html>
 
 
 
Voici le code source telecharger.php
 
 
<?php  
 
// on essaie de reconnaitre l'extension pour que le téléchargement corresponde au type de fichier afin d'éviter les erreurs de corruptions  
 
switch(strrchr(basename($_GET['Fichier_a_telecharger']), "." )) {
 
case ".gz": $type = "application/x-gzip"; break;
case ".tgz": $type = "application/x-gzip"; break;
case ".zip": $type = "application/zip"; break;
case ".pdf": $type = "application/pdf"; break;
case ".png": $type = "image/png"; break;
case ".gif": $type = "image/gif"; break;
case ".jpg": $type = "image/jpeg"; break;
case ".txt": $type = "text/plain"; break;
case ".htm": $type = "text/html"; break;
case ".html": $type = "text/html"; break;
default: $type = "application/octet-stream"; break;
 
}
 
header("Content-disposition: attachment; filename=".$_GET['Fichier_a_telecharger']);  
header("Content-Type: application/force-download" );  
header("Content-Transfer-Encoding: $type\n" ); // Surtout ne pas enlever le \n
header("Content-Length: ".filesize($_GET['chemin'] . $_GET['Fichier_a_telecharger']));  
header("Pragma: no-cache" );  
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0, public" );  
header("Expires: 0" );  
readfile($_GET['chemin'].$_GET['Fichier_a_telecharger']);  
?>

Reply

Marsh Posté le 01-04-2004 à 09:19:44   

Reply

Marsh Posté le 01-04-2004 à 10:53:45    

quelqu'un éventuellement saurait me donner une piste
 
peut ête que je dois changer une option dans le fichier phpini   ?????????

Reply

Marsh Posté le 01-04-2004 à 11:51:32    

les balises [code], c'est pas fait pour rien :p
 
si j'ai bien compris ton problème, quand tu cliques sur le lien, le code contenu dans telechargement.php s'affiche dans ton navigateur?
php est il installé sur ton serveur? ton serveur web est-il configuré pour gérer les pages en php?

Reply

Marsh Posté le 01-04-2004 à 11:58:51    

Y a des problèmes de sécurité dans ton script, on peut récupérer le fichier que l'on souhaite en passant le chemin et le fichier telecharger qui vont bien :)

Reply

Marsh Posté le 01-04-2004 à 13:45:26    


mon serveur gère bien les pages php
en fait quand tu cliques sur le lien, je voudrais qu'il lance un téléchargement d'un fichier dont je lui spécifie le chemin
 
en local il télécharge bien le fichier mais en réseau, il télécharge une image html du répertoire courant du code source test.php

Reply

Marsh Posté le 01-04-2004 à 13:51:41    

chameau27 a écrit :


en local il télécharge bien le fichier mais en réseau, il télécharge une image html du répertoire courant du code source test.php


tu peux me traduire ça? :D
j'ai rien compris :pt1cable:  
 
si ça marche sur ton serveur de prod et pas sur ton serveur de dév, c'est qu'ils ont pas la même configuration [:proy] (je sais, j'enfonce les portes ouvertes :D)
donc, compare tes fichiers php.ini et httpd.conf, pour voir où ils diffèrent.

Reply

Marsh Posté le 01-04-2004 à 14:01:47    

qhand je teste le téléchargement sur la machine réseau, je télécharge le bon fichier donnees6.txt. Aucun problème.
 
Mais quand je le teste sur une machine client, je n'arrive pas a récupérer le fichier donnees6.txt. au lieu de télécharger le fichier donnees6.txt, il télécharge le fichier test.php qu'il met en type htm.

Reply

Marsh Posté le 01-04-2004 à 14:52:55    

et tu es sûr que l'extension .php a associée au module php dans le httpd.conf? :heink:
compare tes fichiers de config locaux avec les versions sur ton serveur [:proy]

Reply

Marsh Posté le 01-04-2004 à 15:13:23    

je sais ,je suis lourd.  Mais bon je débute en php et je ne suis pas tres fort point de vue serveur
 
je dois regarder où dans le fichier httpd.conf?????
et les fichiers de config locaux sont ou??
 

Reply

Marsh Posté le 01-04-2004 à 15:31:05    

regarde partout ou il y a "php":p
 
plus sérieusement, avec un soft style textpad tu peux comparer les fichiers.
 
le httpd.conf est dans le rép conf de apache... après, je sais pas où tu as installé tes softs ;)
c'est aussi différend si t'es sous linux ou win [:proy]

Reply

Marsh Posté le 01-04-2004 à 15:31:05   

Reply

Marsh Posté le 01-04-2004 à 15:32:56    

tu peux regarder ici: http://forum.hardware.fr/hardwaref [...] 2943-1.htm pour les pbm de conf d'apache ;)
 
edit: avec une url plus jolie :)


Message édité par dropsy le 01-04-2004 à 15:39:22
Reply

Marsh Posté le 01-04-2004 à 15:48:48    


 
merci, je vais aller regarder
 
je te tiendrai au courant  
 
 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed