php-envoie d'un fichier sur le net

php-envoie d'un fichier sur le net - Programmation

Marsh Posté le 15-04-2001 à 12:12:02    

salut tout le monde, voilà j'ai fait un formulaire pour envoyer un fichier sur un site :
<HTML>
<HEAD>
<TITLE>envoyer un journal journal</TITLE>
</HEAD>
<BODY>
<form name="vince" method="post" action="lea_ajout_journal.php3" enctype="multipart/form-data">
<input type="hidden" name="taillemax" size="100000">
 <table>
  <tr>
   <td>entrez le chemin complet du fichier à transférer :</td><td><input type="file" name="journal"></td>
  </tr>
 </table>
 <p>
 <p align="center"><input type="submit" value="envoyer le fichier"></p>
</form>
</BODY>
</HTML>
 
ce fichier je voudrais qu'il soit dans un répertoire particulier de mon site, donc j'ai le fichier .php3 suivant :
 
<?php
 if($journal)
  copy($journal,"journal/".$journal_name);
?>
 
J'utilise QuickPHP pour tester si mon site fonctionne et lorsque j'essaie d'envoyer un fichier il y a une erreur au niveau du serveur, avec EasyPHP c'est pareil, quelq'un pourrait me confirmer ou me corriger mes pages.

Reply

Marsh Posté le 15-04-2001 à 12:12:02   

Reply

Marsh Posté le 15-04-2001 à 14:54:06    

c'est koi ton $journal_name ?
 
quelle est l'erreur générée ? en general elles sont assez explicites

Reply

Marsh Posté le 15-04-2001 à 16:22:01    

$journal_name c'est un fichier temp.html de moins de 1ko. L'erreur en fait c'est "internal server error" et le programme php plante, pas le serveur. Sur un autre site le mec a fait un script pour envoyer un fichier sur son site via un formulaire, comme moi, mais ça ne marche pas non plus via easyphp, mais ça fonctionne chez son hébergeur, c'est pour ça que je veux savoir si mon script est correct vu que je ne peux pas le vérifier.

Reply

Marsh Posté le 16-04-2001 à 19:02:22    

1/
"<input type="hidden" name="taillemax" size="100000">"
tu devrais utiliser name="MAX_FILE_SIZE" comme ça le fichier n'est pas conservé sur le serveur s'il dépasse cette taille (mais aucun message d'erreur n'est généré)
 
2/
le chemin utilisé pour la fonction copy() doit être défini par raport au système pas par rapport au serveur web donc celui que tu indiques ne peut pas être bon, je pense que c'est là d'où vient ton erreur. Par exmeple celà pourrait être "c:/serveur_web/www/fichiers/"
 
3/
Dans ton fichier de traitement il faudrait plutôt utiliser  
if ($journal != "none" ) {....
car si tu n'indiques pas de fichier la variable $journal prendra la valeur "none" et tu auras une erreur lors de l'appel à la fontion copy() puisqu'il n'y a pas de fichier !

Reply

Marsh Posté le 16-04-2001 à 20:12:30    

un fichier uploadé est stocké dans un repertoire temporaire sur le systeme distant.
 
il faut donc le deplacer dans une zone visible par ton serveur web.
 
mais pour pouvoir le deplacer il faut connaitre son nom temporaire (pour le retrouver) ainsi que son vrai nom (pour le copier en zone visible)
 
  // -------------------------------------------------------------
  // recup de multiples fichiers uploade HTTP_POST_FILE  
  // -------------------------------------------------------------
  function GetFile( $http_file )
   {
    $tab = array();
    for ($i=0 ; $i < count($http_file) ; $i+=4 )
       {
        $tab[$i]["nom"] = $http_file["name"][$i];
        $tab[$i]["tmp"] = $http_file["tmp_name"][$i];
        $tab[$i]["type"] = $http_file["type"][$i];
        $tab[$i]["taille"] = $http_file["size"][$i];
       }
 
    return $tab;
   }
 
dans ton html met journal[] plutot que journal , en multipliant les champs de ce type : tu pourras ainsi uploadé plusieurs fichiers simultanement . Ensuite :  
 
l'appel :  
 
$info = GetFile($HTTP_POST_FILES["journal"]);
 
deplacement (si "/web/www/upload" est le repertoire visible depuis ton serveur web)
 
for ($i=0 ; $i <count($info) ; $i++)
  if (! copy($info[$i]["tmp"],"/web/www/upload/".$info[$i]["nom"]))
    { echo "probleme" ; exit; }  
   else
     {
       echo "le fichier ".$info[$i]["nom"]." de taille ".$info[$i]["taille"]." a été transféré de ".$info[$i]["tmp"]." en /web/www/upload/".$info[$i]["nom"];
      }


---------------
Do androïds dream of electric sheep ?
Reply

Marsh Posté le 17-04-2001 à 09:58:09    

merci tout le monde

Reply

Marsh Posté le 17-04-2001 à 17:41:47    

pas d'autres réponses, moi je voudrais le tester quand même via QuickPHP ou autre avant de le balancer sur le net.
UP

Reply

Marsh Posté le 21-04-2001 à 15:00:22    

nicotine> j'ai essayé ton script, mais il me fait la même erreur que l'utre, plantage de php et ensuite affichage d'une page html disant que le serveur a rencontré une erreur, veuillez la mentionner à xxx.

Reply

Marsh Posté le 21-04-2001 à 15:05:14    

Et ça : ça donne quoi
 
fichier upload.php3
-------------------
<HTML><HEAD></HEAD>
<BODY>
 
<?php
echo $Fichier;
if ($Fichier && $Fichier != "none" ) {
 
  echo "<H1> Votre fichier : </H1>";
  echo "Fichier sur serveur : $Fichier<BR>";
  echo "Fichier envoyé      : $Fichier_name<BR>";
  echo "Taille              : $Fichier_size<BR>";
  echo "Type                : $Fichier_type<BR>";
 
  copy(stripslashes($Fichier), $Fichier_name);
  $tab=file(stripslashes($Fichier));
   
  unlink(stripslashes($Fichier));
   
  for ($i=0;$i<count($tab);$i++)
   echo $tab[$i];
}
?>
 
<FORM ENCTYPE="multipart/form-data" ACTION="upload.php3" METHOD="POST">
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="100000">
Envoyer le fichier : <INPUT NAME="Fichier" TYPE="file">
<INPUT TYPE="submit" VALUE="Envoyer le fichier">
</FORM>
 
</BODY></HTML>
---------------------------


---------------
http://www.cheata.net le site qui vous donne la banane!
Reply

Marsh Posté le 21-04-2001 à 15:09:44    

je vais essayer Roswell, mais apparemment c'est QuickPHP, EasyPHP et autres qui foirent. Ca fonctionne chez vous ?

Reply

Marsh Posté le 21-04-2001 à 15:09:44   

Reply

Marsh Posté le 21-04-2001 à 16:38:10    

t'as declaré quel taille max de fichier à uploader dans ton php.ini ?


---------------
Do androïds dream of electric sheep ?
Reply

Marsh Posté le 21-04-2001 à 17:38:28    

100000, c'est bien 100 Ko ?

Reply

Marsh Posté le 21-04-2001 à 18:22:18    

ca depend ce que tu veux en faire et ou tu l'heberges.
 
j'ai limité le mien à 20 Mo (et tu peux aussi limite via MAX_FILE_SIZE ;)  : c'est pour un intranet


---------------
Do androïds dream of electric sheep ?
Reply

Marsh Posté le 21-04-2001 à 18:38:09    

tu peux mettre ton error_log d'apache stp ?


---------------
Do androïds dream of electric sheep ?
Reply

Marsh Posté le 22-04-2001 à 00:49:07    

avec php j'obtiens ça : Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, you@your.address and inform them of the time the error occurred, and anything you might have done that may have caused the error.
 
More information about this error may be available in the server error log.
 
 
 
--------------------------------------------------------------------------------
 
Apache/1.3.14 Server at localhost Port 80
 
après un plantage de php.exe avec quickphp quelque soit le script d'upload utilisé.

Reply

Marsh Posté le 22-04-2001 à 01:38:05    

les logs d'apache !!


---------------
Do androïds dream of electric sheep ?
Reply

Marsh Posté le 22-04-2001 à 10:31:24    

[Wed Apr 11 15:07:56 2001] [error] [client 127.0.0.1] Premature end of script headers: e:/quickphp/php4/php.exe
[Sun Apr 15 11:44:54 2001] [error] [client 127.0.0.1] Premature end of script headers: e:/quickphp/php3/php.exe
[Sun Apr 15 12:01:11 2001] [error] [client 127.0.0.1] Premature end of script headers: e:/quickphp/php3/php.exe
[Sat Apr 21 13:47:06 2001] [error] [client 127.0.0.1] Premature end of script headers: e:/quickphp/php3/php.exe
[Sat Apr 21 14:33:20 2001] [error] [client 127.0.0.1] Premature end of script headers: e:/quickphp/php3/php.exe
[Sat Apr 21 14:36:42 2001] [error] [client 127.0.0.1] Premature end of script headers: e:/quickphp/php3/php.exe
[Sun Apr 22 00:50:45 2001] [error] [client 127.0.0.1] Premature end of script headers: e:/quickphp/php3/php.exe

Reply

Marsh Posté le 22-04-2001 à 20:33:30    

meme pb de plantage de php (avec quickphp ou eazyphp) sous win pr mes scripts d'upload ...

Reply

Marsh Posté le 23-04-2001 à 00:03:05    

- aux vues des logs , j'aimerais voir le script complet (je l'essayerais ensuite de mon coté)
 
- il est bien connu que windoz n'est pas l'ideal pour faire tourner apache /mysql /php :D ....mais c'est un autre debat.


---------------
Do androïds dream of electric sheep ?
Reply

Marsh Posté le 23-04-2001 à 08:45:11    

ben en fait, j'ai regardé sur plusieurs moteurs de recherche et impossible de faire tourner des scripts d'upload sous QuickPHP ou EasyPHP, peut-être PHPTriad ?

Reply

Sujets relatifs:

Leave a Replay

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