[Joomla 2.5] Upload de fichier

Réduire
Ce sujet est fermé.
X
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] [Joomla 2.5] Upload de fichier

    Bonjour à tous.
    J'essaie actuellement d'uploader deux fichier en passant par un formulaire.
    Mon code est le suivant :

    Code PHP:
    <?php

    // No direct access

    defined('_JEXEC') or die('Restricted access');

    //jimport('joomla.application.component.view');

    //Import filesystem libraries.
    jimport('joomla.filesystem.file');

    ?>


    <h1><?php echo $this->titre?></h1>




    <?php

    /*
    ********************************************************************************************
    CONFIGURATION
    ********************************************************************************************
    */
    // destinataire est votre adresse mail. Pour envoyer a plusieurs a la fois, separez-les par une virgule
    $destinataire 'l3sft@yopmail.com';

    // copie a (envoie une copie au visiteur)
    $copie 'oui';

    // Action du formulaire (si votre page a des parametres dans l'URL)
    // si cette page est index.php?page=contact alors mettez index.php?page=contact
    // sinon, laissez vide
    $form_action '';

    // Messages de confirmation du mail
    $message_envoye "Votre message nous est bien parvenu !";
    $message_non_envoye "L'envoi du mail a echoue, veuillez reessayer SVP.";

    // Message d'erreur du formulaire
    $message_formulaire_invalide "Verifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";

    /*
    ********************************************************************************************
    FIN DE LA CONFIGURATION
    ********************************************************************************************
    */





    // On recupere tous les champs du formulaire.
    $cv 'cv';
    $lettre 'lettre';
    $objet 'Postulation pour une offre';
    $message 'message';



    $err_formulaire false// sert pour remplir le formulaire en cas d'erreur si besoin



    if (isset($_POST['envoi']))
    {
        if ((
    $message != ''))
        {
            
    // les 4 variables sont remplies, on genere puis envoie le mail
            
    $headers 'From:'.$cv.' <'.$lettre.'>' "\r\n";
            
    //$headers .= 'Reply-To: '.$lettre. "\r\n" ;
            //$headers .= 'X-Mailer:PHP/'.phpversion();



            // Remplacement de certains caracteres speciaux
            
    $message str_replace("'","'",$message);
            
    $message str_replace("’","'",$message);
            
    $message str_replace("&quot;",'"',$message);
            
    $message str_replace('&lt;br&gt;','',$message);
            
    $message str_replace('&lt;br /&gt;','',$message);
            
    $message str_replace("&lt;","&lt;",$message);
            
    $message str_replace("&gt;","&gt;",$message);
            
    $message str_replace("&amp;","&",$message);




            
    // Envoi du mail
            
    if (mail($destinataire$objet$message$headers))
            {
                echo 
    '<p>'.$message_envoye.'</p>';
            }
            else
            {
                echo 
    '<p>'.$message_non_envoye.'</p>';
            };





            
    // Recupere les details des fichiers a uploader
            // qui sont envoyes par le formulaire.
            //$file = JRequest::getVar('file_upload', null, 'files', 'array');
            
    $file_cv JRequest::getVar('cv'null'files''array');
            
    $file_lettre JRequest::getVar('lettre'null'files''array');


            
    // Nettoie le lien pour enlever les caracteres etranges comment les espaces
            //$filename = JFile::makeSafe($file['name']);
            
    $filename_cv JFile::makeSafe($file_cv['name']);
            
    $filename_lettre JFile::makeSafe($file_lettre['name']);


            
    // Selectionne le dossier source et destination
            // JPATH_COMPONENT correspond a ...
            
    $src $file_cv['tmp_name'];
            
    $src $file_lettre['tmp_name'];
            
    $dest JPATH_ADMINISTRATOR.DS.'components'.DS.'com_adsmanager'.DS.'tables' DS $filename_cv;
            
    $dest JPATH_ADMINISTRATOR.DS.'components'.DS.'com_adsmanager'.DS.'tables' DS $filename_lettre;


            
    //First check if the file has the right extension, we need pdf only
            
    if ( strtolower(JFile::getExt($filename_cv) ) == 'pdf') {
                if ( 
    JFile::upload($src$dest) ) {
                    
    //Redirect to a page of your choice
                
    } else {
                    
    //Redirect and throw an error message
                
    }
             } else {
                
    //Redirect and notify user file is not right extension
            
    }

            
    //First check if the file has the right extension, we need pdf only
            
    if ( strtolower(JFile::getExt($filename_lettre) ) == 'pdf') {
                if ( 
    JFile::upload($src$dest) ) {
                    
    //Redirect to a page of your choice
                
    } else {
                    
    //Redirect and throw an error message
                
    }
            } else {
                
    //Redirect and notify user file is not right extension
            
    }




            
    // Enregistrement dans la BDD
            //connection au serveur
            
    $cnx mysql_connect"localhost""root""" ) ;

            
    //sélection de la base de données:
            
    $db  mysql_select_db"BDD" ) ;
            
    $sql "INSERT  INTO postulation (id_user, nom_entreprise, id_offre, message) VALUES ( '$this->userid', '$this->entreprise', '$this->idoffre', '$message' ) " ;
            
    //exécution de la requête SQL:
            
    $requete mysql_query($sql$cnx) or die( mysql_error() ) ;





            
    //affichage des résultats, pour savoir si l'insertion a marchée:
            
    if($requete)
            {
                echo(
    "L'insertion a été correctement effectuée") ;
            }
            else
            {
                echo(
    "L'insertion à échouée") ;
            }

        }
        else
        {
            
    // une des 3 variables (ou plus) est vide ...
            
    echo '<p>'.$message_formulaire_invalide.'</p>';
            
    $err_formulaire true;
        };
    }; 
    // fin du if (!isset($_POST['envoi']))



    // Cette partie affiche le formulaire
    if (($err_formulaire) || (!isset($_POST['envoi'])))
    {
        
    // afficher le formulaire
        
    echo '
        <form id="postule" method="post" action="'
    .$form_action.'" enctype="multipart/form-data">
        <fieldset><legend>Pièces jointes :</legend>
        <p><label for="cv">CV :</label><input type="file" id="cv" name="cv" value="'
    .stripslashes($cv).'" tabindex="1" /></p>
        <p><label for="lettre">Lettre Motivation :</label>
        <input type="hidden" name="MAX_FILE_SIZE" value="1048576" />
        <input type="file" id="lettre" name="lettre" value="'
    .stripslashes($lettre).'" tabindex="2" /></p>
        </fieldset>

        <fieldset><legend>Votre message :</legend>
        <p><label for="message">Informations supplémentaires :</label><textarea id="message" name="message" tabindex="4" cols="30" rows="8">'
    .stripslashes($message).'</textarea></p>
        </fieldset>

        <div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer le formulaire !" /></div>
        </form>'
    ;
    };
    ?>


    Le formulaire fonctionne bien, mais la partie qui doit uploader mes deux fichiers me donne une erreur :
    Attention : impossible de déplacer le fichier.

    La partie en question a été faites selon le modèle http://docs.joomla.org/How_to_use_th...system_package.

    Code PHP:
    Recupere les details des fichiers a uploader
            
    // qui sont envoyes par le formulaire.
            //$file = JRequest::getVar('file_upload', null, 'files', 'array');
            
    $file_cv JRequest::getVar('cv'null'files''array');
            
    $file_lettre JRequest::getVar('lettre'null'files''array');


            
    // Nettoie le lien pour enlever les caracteres etranges comment les espaces
            //$filename = JFile::makeSafe($file['name']);
            
    $filename_cv JFile::makeSafe($file_cv['name']);
            
    $filename_lettre JFile::makeSafe($file_lettre['name']);


            
    // Selectionne le dossier source et destination
            // JPATH_COMPONENT correspond a ...
            
    $src $file_cv['tmp_name'];
            
    $src $file_lettre['tmp_name'];
            
    $dest JPATH_ADMINISTRATOR.DS.'components'.DS.'com_adsmanager'.DS.'tables' DS $filename_cv;
            
    $dest JPATH_ADMINISTRATOR.DS.'components'.DS.'com_adsmanager'.DS.'tables' DS $filename_lettre;


            
    //First check if the file has the right extension, we need pdf only
            
    if ( strtolower(JFile::getExt($filename_cv) ) == 'pdf') {
                if ( 
    JFile::upload($src$dest) ) {
                    
    //Redirect to a page of your choice
                
    } else {
                    
    //Redirect and throw an error message
                
    }
             } else {
                
    //Redirect and notify user file is not right extension
            
    }

            
    //First check if the file has the right extension, we need pdf only
            
    if ( strtolower(JFile::getExt($filename_lettre) ) == 'pdf') {
                if ( 
    JFile::upload($src$dest) ) {
                    
    //Redirect to a page of your choice
                
    } else {
                    
    //Redirect and throw an error message
                
    }
            } else {
                
    //Redirect and notify user file is not right extension
            

    Je suppose que l'erreur vient d'un soucis d'accès aux dossiers.
    J'ai vérifié dans la configuration du site, l'accès aux dossiers est bien Modifiable.
    Mais je ne trouve pas de solution. Je ne sais pas si le soucis vient du dossier temporaire (dont je ne connais pas l'adresse) ou du dossier de destination.

    Quelqu'un aurait une idée ?

    Merci d'avance pour vos réponses.

  • #2
    Re : [Joomla 2.5] Upload de fichier

    J'ai trouvé mon erreur.
    C'est tout bête, j'avais juste mis les même noms pour mes sources ($src) et destination ($dest).
    Je les ai renommés en $src_cv et $src_lettre et maintenant ça marche.

    Commentaire


    • #3
      Re : [Joomla 2.5] Upload de fichier

      N'oublies pas de passer ton sujet en Réglé

      Commentaire

      Annonce

      Réduire
      Aucune annonce pour le moment.

      Partenaire de l'association

      Réduire

      Hébergeur Web PlanetHoster
      Travaille ...
      X