UPLOAD à partir d'une page php [Résolu]

Signaler
Messages postés
2
Date d'inscription
samedi 15 décembre 2007
Statut
Membre
Dernière intervention
3 mars 2008
-
Messages postés
2
Date d'inscription
samedi 15 décembre 2007
Statut
Membre
Dernière intervention
3 mars 2008
-
Bonsoir,
J'ai réussi des upload à partir de page html, mais cette fois-ci, le formulaire se trouve dans une page php.
Dans la page désignée par action j'obtiens bien dans $_FILES['image']['name'] le nom du fichier sélectionné
mais $_FILES['image']['tmp_name'] est vide et $_FILES['image']['size'] est == 0 (mais 'error' est OK
je montre :
page php appelante :
<form name="monform" enctype="multipart/form-data" method="post" action="verification.php" target="_self">

</form>

dans verification.php (entre autre)
if (is_uploaded_file($_FILES['file']['tmp_name'])) {
        echo "fichier ".$_FILES['file']['name']."est téléchargé
";}
        else {echo "le fichier".$_FILES['file']['name'].". n'est pas téléchargé";}

eh ben on obtient le fichier toto.jpg n'est pas téléchargé
qq a t'il la solution ?
merci d'avance beaucoup
JV43

3 réponses

Messages postés
373
Date d'inscription
samedi 9 juillet 2005
Statut
Membre
Dernière intervention
11 août 2008

Salut,
Essaye ce fichier "verification.php" :
<?php
// On vérifie avec la fonction "isset" que le fichier envoyé existe.
// On vérifie avec la fonction "is_uploaded_file" que le fichier est bien un fichier "uploader".
// Si une de ses conditions est fausse on renvoie vers "formulaire.html".
if (!isset($_FILES['file']) OR !is_uploaded_file($_FILES['file']['tmp_name'])) header('Location: formulaire.html');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <meta http-equiv="Content-type" content="text/html; charset=iso-8859-15" />
        <title>Upload PHP</title>
    </head>
   
       
            <?php
                // La variable "$sDirUpload" contient l'adresse du dossier où le fichier va être envoyer.
                $sDirUpload = $_SERVER['DOCUMENT_ROOT'].dirname($_SERVER['PHP_SELF']).'/';
               
                // La fonction "move_upload_file" permet d'envoyer le fichier "uploader" vers le dossier "$sDirUpload".
                // Si la fonction réussi on affiche "L'upload a réussi !".
                // Si la fonction échoue on affiche "L'upload a échoué.".
                if (move_uploaded_file($_FILES['file']['tmp_name'], $sDirUpload.$_FILES['file']['name'])) echo 'L\'upload a réussi !';
                else echo 'L\'upload a échoué.';
            ?>
       

   
</html>

For every choice, a consequence (Fable)
Messages postés
7
Date d'inscription
mercredi 11 avril 2001
Statut
Membre
Dernière intervention
27 juin 2009

Tu peux toujours essayer quelque chose de ce type là si ca ne marche pas :

<?php

// Répertoire de stockage
$folder = "./dossier/";

// Taille maximum du fichier
$MAX_FILE_SIZE = 150000;

// Format autorisé dans l'upload de fichier
// Vérifier avec un $HTTP_POST_FILES['pFichier']['type'] le format utilisé par votre fichier
$allowed_types = array(
                        "application/octet-stream",
                        "application/pdf",
                        "image/bmp",
                        "image/gif",
                        "image/pjpeg",
                        "image/jpeg",
                        "image/jpg",
                        "multipart/x-zip",
                        "video/msvideo"
                        );

if(isset($_GET['action'])){
$action=$_GET['action'];
}else{
$action="check";
}

Switch ($action){
/*********************************************************************************
*
*    Sélection du fichier
*
*********************************************************************************/
    case "check":
        echo "<form enctype='multipart/form-data' action='upload.php?action=upload' method='post'>";
        echo "    Fichier à uploader :";
        echo "   
";
        echo "    ";
        echo "    ";
        echo "</form>";
    break;
/*********************************************************************************
*
*    Upload du fichier
*
*********************************************************************************/
    case "upload":
        // Variables récupérée par methode POST du formulaires
        $fname     =    $HTTP_POST_FILES['fichier']['name'];
        $ftype     =    $HTTP_POST_FILES['fichier']['type'];
        $fsize     =    $HTTP_POST_FILES['fichier']['size'];
        $ftmp     =    $HTTP_POST_FILES['fichier']['tmp_name'];

        // Divers test afin de savoir si :
        // Le format de fichier correspond à notre tableau array
        if(!in_array($ftype, $allowed_types)){$error = 1;}

        // La taille du fichier n'est pas dépassée
        if($fize > $MAX_FILE_SIZE){$error = 2;}

        // Le fichier n'existe pas déjà
        if(file_exists($folder.$fname)){$error = 3;}

        // Si tout est ok
        if(!$error)
        if(copy($ftmp,''.$folder.$fname.'') && !$error) {$error = 0;}

        // Gestion des erreurs
        switch($error){
            case'0':
                echo "Fichier correctement envoyé";
            break;
            case'1':
                echo "Format de fichier incorrect";
            break;
            case'2':
                echo "Fichier trop volumineux";
            break;
            case'3':
                echo "Fichier déjà existant dans ce répertoire";
            break;
        }
    break;   
}   
?>
Messages postés
2
Date d'inscription
samedi 15 décembre 2007
Statut
Membre
Dernière intervention
3 mars 2008

Bonsoir à vous deux,
merci de votre contribution c'est vraiment sympa
bon, voilà en cherchant sur php.net j'ai trouvé la signification des codes d'erreur concernant les $_FILES et en fait les fichiers que je testais dépassaient le max_files se trouvant dans le fichier .htaccess, tout simplement
mais vos conseils m'ont permis d'améliorer mon code et c'est bien chouette comme ça
Bien cordialement
JPP