Probleme sur un script php (upload) - Page 2

Précédent
  • 1
  • 2
  1. R4f Messages postés 441 Statut Membre 62
     
    A vrai dire, tout est déjà là : Upload de fichiers
    0
  2. asus02
     
    j ai remodifier le formulaire (form.html) comme ceci :

    <!-- Formulaire -->
    
          <!-- Attention, ne de ne pas oublier le enctype="multipart/form-data" -->
      
          <form method="POST" action="upload.php" enctype="multipart/form-data">
    
          <!-- Limiter la taille des fichiers à 500Ko -->
    
          <input type="hidden" name="MAX_FILE_SIZE" value="500000" />
      
          <fieldset>
    
          <legend><font color=#000000>Envoi de fichiers</font></legend>
      
          <!-- champs d'envoi de fichier, de type file -->
      
          <p><label for="up"><font color=#000000>Fichier</font></label><input type="file" name="up" /></p>
     
          
     
          <!-- bouton d'envoi -->
      
          <p><input type="submit" name="envoi" value="Envoyer les fichiers" /></p>
      
          </legend>
      
          </fieldset>
      
          </form> 


    et la page php (upload.php) :

    <?php
    
     
    
    if(isset($_FILES['up']))
    
    {
    
    // params
    
    unset($erreur);
    
    $extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
    
    $taille_max = 100000;
    
    $dest_dossier = '/up/';
    
    // utilisez également des slashes sous windows : $dest_dossier = '/up//up/';
    
    // vérifications
    
    if( !in_array( substr(strrchr($_FILES['up']['name'], '.'), 1), $extensions_ok ) )
    
    {
    
    $erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
    
    }
    
    elseif( file_exists($_FILES['up']['free'])
    
    and filesize($_FILES['up']['free']) > $taille_max)
    
    {
    
    $erreur = 'Votre fichier doit faire moins de 500Ko !';
    
    }
    
    // copie du fichier
    
    if(!isset($erreur))
    
    {
    
    $dest_fichier = basename($_FILES['up']['free']);
    
    // formatage nom fichier
    
    // enlever les accents
    
    $dest_fichier = strtr($dest_fichier,
    
    'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
    
    'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    
    // remplacer les caracteres autres que lettres, chiffres et point par _
    
    $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
    
    // copie du fichier
    
    move_uploaded_file($_FILES['up']['free'], $dest_dossier . $dest_fichier);
    
    }
    
    }
    
     
    
    ?>
    
    Hebergeur en maintenance, désole.
    
    Veuillez reporter votre hebergement.
    
    merci


    toujour en panne je tombe bien sur la page php avec "Hebergeur en maintenance, désole.

    Veuillez reporter votre hebergement.

    merci
    en haut de page

    pour faire un test ===> http://acr02.fr/form.html

    merci
    0
  3. R4f Messages postés 441 Statut Membre 62
     
    L'erreur venait de la ligne
    $dest_dossier = '/up/';
    


    Cela indique que le dossier destination est à la racine du serveur (alors que toi tu veux sans doute que ce soit à la racine du site)... Il faut donc changer pour 'up/'.

    et puis du fait que tu utilisais mal le fichier $_FILES (pour savoir exactement ce qu'il contient, fais print_r($_FILES) et tu verras sa structure exacte).

    Bon, pour que ça marche, je l'ai installé et fait marcher, et j'ai changé des trucs à droite à gauche, je ne peux pas te dire de tête si c'est bloquant ou pas.

    Donc je te mets le code (qui marche) :

    
    <?php
    
    if(!isset($_FILES['up'])) {
            header('Location: form.html');
            exit();
    }
    
    // params
    unset($erreur);
    $extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
    $taille_max = 100000;
    $dest_dossier = 'up/';
    // utilisez également des slashes sous windows : $dest_dossier = '/up//up/';
    // vérifications
    if( !preg_match('/\.'.join('|', $extensions_ok).'\Z/', $_FILES['up']['name']) ) {
            $erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
    } elseif( file_exists($_FILES['up']['tmp_name'])
                    and filesize($_FILES['up']['tmp_name']) > $taille_max) {
            $erreur = 'Votre fichier doit faire moins de 500Ko !';
    }
    // copie du fichier
    if(!isset($erreur))
    {
            $dest_fichier = basename($_FILES['up']['name']);
            echo "fichier destination : ",$dest_fichier, "<br/>";
            // formatage nom fichier
            // enlever les accents
    	$dest_fichier = strtr($dest_fichier,
    		'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
    
    		'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    
            // remplacer les caracteres autres que lettres, chiffres et point par _
            $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
            // copie du fichier
            move_uploaded_file($_FILES['up']['tmp_name'], $dest_dossier . $dest_fichier);
    }
    
    
    ?>
    
    Il s'est produit une erreur : <?=$erreur ?>
    


    Bon, j'ai pas fait dans la dentelle, il indique toujours qu'il y a eu une erreur. Quand celle-ci est vide, c'est qu'il n'y a pas d'erreur... ;-)

    Raph
    0
Précédent
  • 1
  • 2