IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Travailler avec un input file /jquery/php


Sujet :

jQuery

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2015
    Messages : 135
    Par défaut Travailler avec un input file /jquery/php
    bonjour ,
    voici mon probleme : j ai un formulaire d ajout d 'evenement auquel je souhaiterais ajouter une piece jointe ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <body>
    <div id="form_ajoutevt" style="width:800px" title="Ajouter un événement">
    	<form id="f_ajoutevt" method="post" action="#">
    		<p><label>Tire de l' événement (*) ) :</label><input type="text"  id="I_titre_evt" maxlength="100"" size="25" /> </p>
    		<p><label>Pièce jointe </label><input type="file" id="I_fichier" />
    	</form>
    </body>
    Lors du clic sur le bouton d ajout je traite les données en jquery pour faire et les test et surtout ajouter l' evenement via la methode $.post qui va permettre d envoyer les informations saisie a un fichier *.php afin d effectuer le traitement des données
    voici le code jquery
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    <script>
    $(function()
    {
    
    
    
    $("#form_ajoutevt").dialog(
    {
    autoOpen:false,
    resizable:false,
    buttons:{
    		
    			"Ajouter":function()
    						{
    							if ($("#I_titre_evt").val()=="")
    							{
    								alert ("Veuillez donner un titre à l' évenement")
    							}
    							var vtitre=$("#I_titre_evt").val();
    							var vfichier=$("#I_fichier").val();//fichier à uploader
    							
    							
    							$.post("controleur/ctrl_ajout_evt.php",{vfichier:vfichier,vtitre:vtitre},function(data)
    								{
    									if (data['rep']=='1')
    									{
    										$("#form_ajoutevt").dialog("close");
    										
    									}
    									
    								},"json")
    							
    							
    							
    						}
    	
    		}
    }
    )
    
    
    }
    </script>
    voici le fichier ctrl_ajout_evt.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
     
    $vtitre=$_POST['vtitre'];
    $vfichier=$_POST['vfichier'];
     
    $infofichier= pathinfo($_FILES['vfichier']['name'];
    echo $infofichier;
     
    ?>
    c est dedans que j aimerais faire l upload de mon fichier or deja lors de l affichage de la variable $infofichier il y a un probleme car il me repond que la variable n existe pas.Je n arrive pas a traiter le fichier .
    comment puis je faire pour transmettre mon fichier à uploader au fichier ctrl_ajout_evt.php ?
    auriez vous une idée ?

    merci d avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 419
    Par défaut
    Salut,

    Il y a une solution toute prête ici pour faire de l'upload de fichier en ajax avec javascript/jquery et php côté serveur. Tu pourras ajouter les champs que tu veux dans le formulaire, ils seront transmis automatiquement côté serveur.

    En fait sur le principe tu n'as pris le problème par le bon bout. Il faut commencer par faire un formulaire d'upload puis ajouter des champs textes, pas l'inverse.

    Sinon tu t'embêtes pour rien avec tes contrôles javascript sur les champs requis. Il suffit de mettre la mention "required" dans l'input du champ html et c'est tout. Si c'est vraiment indispensable évidemment il faudra de toutes façons refaire le contrôle côté serveur mais ça n'apporte rien de le faire en javascript.

  3. #3
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 419
    Par défaut
    EDIT Je viens de me souvenir de ton nom et t'avoir déjà répondu dans un autre topic. Si tu as déjà essayé le module d'upload donné en lien plus haut mais que tu n'as pas tout compris, éventuellement je peux t'aider...

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2015
    Messages : 135
    Par défaut
    oui tu m avais repondu, le fait est que je n ai pas encore pu tester ton plugin, mais je les telecharger me manque juste le temps de le tester car je suis a la bourre sur mon projet..
    maintenant pourquoi dis tu que je prend le probleme par le mauvais bout ?
    je ne vois pas pourquoi faire d abord le formulaire d upload puis le formulaire d evenement sachant que l upload doit se faire justement apres l enregsitrement de mon evenement en base de donnée.C est pour ca que j avais repose la question car je combine a la fois l insertion en base via de l ajax mais aussi un upload de fichier.
    Pour le required j ai essaye mais le probleme qui m est apparue c est que l ' evenement "click" de mon bouton s effectue avant le controle du champ "required" voila pourquoi je me suis senti obligé d' integrer un controle de saisie dans mon evenement.

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 419
    Par défaut
    Citation Envoyé par wwilly17 Voir le message
    maintenant pourquoi dis tu que je prend le probleme par le mauvais bout ?
    je ne vois pas pourquoi faire d abord le formulaire d upload puis le formulaire d evenement sachant que l upload doit se faire justement apres l enregsitrement de mon evenement en base de donnée.C est pour ca que j avais repose la question car je combine a la fois l insertion en base via de l ajax mais aussi un upload de fichier.
    Parce que l'upload de fichier ajax/jquery demande un code spécifique, qui n'est pas une petite évolution d'un formulaire classique mais tout autre chose. Il faut commencer par le code le plus contraignant sinon tu devras tout refaire (comme dans ton exemple).
    Mais cela n'empêche pas pour autant de conditionner l'upload à la présence de certains champs du formulaire ou même d'envoyer des champs textes sans nécessairement faire d'upload. C'est toi qui choisi au final, la méthode d'intégrer des champs textes dans le formulaire d'upload n'impose rien en elle même (pas même l'upload d'un fichier), c'est les conditions que tu mettras dans ton code qui feront la différence.

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2015
    Messages : 135
    Par défaut
    je viens de regarder ton travail, d abord bravo car c est bien documente , bien fait ..
    Je suis pret a l utiliser mais j avaoue j ai du mal a comprendre...
    j ai regarder le basique qui me correspondrait tres bien ..
    premiere question : ou gere tu l evenement click du bouton envoyer ?
    deuxieme question : dans mon cas je dois recuperer les valeurs des autres champs input de mon formulaire , ou les recuperer ? car j ai regarder dans UploadAjaxABCI_Php_Load_Basique.php , je ne vois rien..tu travailles avec l id du formulaire mais comment recuperer les champs ?
    en gros peux tu expliquer comment se gere les differents evenements ? le cheminement car pas evident à suivre ..

  7. #7
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 419
    Par défaut
    Citation Envoyé par wwilly17 Voir le message
    premiere question : ou gere tu l evenement click du bouton envoyer ?
    Cela dépend de ce que tu veux en faire. Normalement il est gérer automatiquement par la classe.
    En cas de besoin spécifique tu peux utiliser la fonction événementielle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    config.func_FormSubmit(event,tableau){// là tu mets le code que tu veux;}
    qui sera déclenchée à la soumission du formulaire.
    Mais il est probable qu'on puisse éviter de l'utiliser. Dis-moi précisément le processus de ton formulaire et les contrôles que tu veux faire.

    Citation Envoyé par wwilly17 Voir le message
    deuxieme question : dans mon cas je dois recuperer les valeurs des autres champs input de mon formulaire , ou les recuperer ? car j ai regarder dans UploadAjaxABCI_Php_Load_Basique.php , je ne vois rien...
    Tu ne vois rien parce que je ne peux pas deviner à l'avance les champs que tu veux ajouter Surtout il est écrit en haut de ce fichier
    Voir le fichier "UploadAjaxABCI_Php_Load.php" pour plus d'exemples détaillés.
    Evidemment le code basique est pour montrer le basique minimum, donc le reste de la doc est ailleurs

    Et quand tu arrives dans le fichier "UploadAjaxABCI_Php_Load.php" tu peux lire en haut de la page :
    /* NOTE : Si vous avez ajouté des champs input dans votre formulaire, utilisez la fonction urldecode() pour récupérer vos variables ex : $ma_variable = urldecode($_POST['ma_variable']) ;*/

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2015
    Messages : 135
    Par défaut
    je viens de faire un petit test et j ai reusi ( tu me diras c est assez simple) a recuperer les info du formulaire dans le fichier d upload UploadAjaxABCI_Php_Load_Basique.php
    donc je pourrais effectuer mon traitement a ce niveau la , mais derniere question ..
    j aimerais changer l affichage de resultat afin de mettre un autre texte du style " Enregistrement de l' evenement terminé " ou autre est ce possible ? si oui a quel niveau ?
    je ne vois pas ou on traite l erreur au cas ou l upload aurait plante ..je souhaiterais dans ce cas mettre 2 message , 1 : si tout c est bien passe, 2 si l ajout a reussi mais pas l upload (" enregistre ok mais upload de votre fichier a echoue") ..ou puis je interagir ?
    merci encore

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2015
    Messages : 135
    Par défaut
    Pourrais tu me confirmer les fichiers essentiels dont on a besoin car je vais transposer ton code et tes classes dans mon projet , et je voudrai garder que les fichiers utiles ..
    je vois qu il y ales fichier js : jquery et UploadAjaxABCI.js est ce tout ?
    cote php : le fichier UploadAjaxABCI_Php_Load_Basique.php et le fichier UploadAjaxABCIServeur.php
    as ton besoin d autres fichiers ?
    dois je inclure le repertoire jquery.imgareaselect-10-0-rc-1 en entier?

  10. #10
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 419
    Par défaut
    C'est quoi la logique de ton code ?

    Le fichier uploadé est-il facultatif ou pas ?

    Veux-tu néanmoins enregistrer des données si un fichier est joint au formulaire mais que l'upload du fichier à échoué, ou simplement renvoyer un message pour dire de réessayer ?

  11. #11
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2015
    Messages : 135
    Par défaut
    Alors pour faire simple : le fichier est facultatif donc upload si besoin mais enregistrement des informations du formulaire. .si il y a un fichier et que l upload échoue alors je n enregistré rien et renvoie une erreur avec le message qui va bien .
    De même si pas de fichier je dois être capable d enregistrer les informations en retournant un message ok ou pas .

  12. #12
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 419
    Par défaut
    Pour ta dernière question il y a aussi le dossier "Upload_Temp" à mettre au même niveau que le répertoire "Php_Upload".

    Après tu peux faire différemment c'est juste le chemin qui est indiqué dans le fichier "UploadAjaxABCI_Php_Load_Basique.php" à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dossier_temporaire = '../Upload_Temp/';
    qui indique l'organisation des répertoires.

    Ensuite ce dossier n'est pas toujours indispensable, il l'est uniquement si tu veux avoir les fonctionnalités automatiques de reprise d'upload en utilisant la partie sauvegardée, ou si tu veux autoriser l'upload de fichiers supérieurs à la valeur du fragment défini dans le fichier "UploadAjaxABCI_Basique.php" avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $UpAbci_fragmentSize = 8388608;
    Cette valeur doit être définie à une valeur inférieure ou au maximum égale aux configurations "upload_max_filesize" et "post_max_size" de ton serveur.

    Il faut donc savoir si tu veux limiter tes fichiers à une taille maximale.
    Si oui il faut savoir ce que retourne les valeurs de echo ini_get('upload_max_filesize'); et echo ini_get('post_max_size'); (que tu peux tester dans une page php séparée si tu veux).

    Si ta taille maximum autorisée que tu souhaites définir n'est pas supérieure aux valeurs retournées par les "ini_get" ci-dessus, tu peux définir $UpAbci_fragmentSize à une valeur voisine légèrement inférieure (pour laisser un peu de place pour tes champs textes) et dans ce cas tu n'as pas besoin de ce dossier temporaire.

    Dans les autres cas ou si tu veux laisser la possibilité de faire une éventuelle reprise d'upload en utilisant la partie sauvegardée, le dossier temporaire "Upload_Temp" est indispensable.

  13. #13
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2015
    Messages : 135
    Par défaut
    Et concernant le fait que le fichier n est pas indispensable dans mon formulaire comment faire pour traiter ce cas ?

  14. #14
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 419
    Par défaut
    Pour te répondre sur la logique de ton code, il faudrait savoir si tu veux permettre l'enregistrement de plusieurs événements en une seule fois (et donc l'upload multiple).

  15. #15
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2015
    Messages : 135
    Par défaut
    Je ne permet pas l upload multiple..un seul événements à la fois...mais dis moi comment faire si je ne veux pas rendre obligatoire la présence d un fichier à upload ? Ton code va t il fonctionne ? Et si oui comment le mettre en place ?

  16. #16
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 419
    Par défaut
    Oui ça vient, je suis entrain de faire un exemple, juste un peu de patience

  17. #17
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2015
    Messages : 135
    Par défaut
    . Merci c est sympa..

  18. #18
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 419
    Par défaut
    Voilà je t'ai fait un fichier de formulaire ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    <?php
     
    //Utilise le fichier "Php_Upload/UploadAjaxABCI_Php_Load_Basique_wwilly17.php" comme destination Ajax
     
    session_start();
    header('Content-type: text/html; charset=UTF-8');
     
    $UpAbci_fragmentSize = 8388608;// Taille maximale des fragments en octets (ici 8Mo). Doit être inférieur ou égal à la configuration "upload_max_filesize" du serveur. Voir le fichier "UploadAjaxABCI.php" pour un contrôle automatique de cette valeur. Les fichiers inférieurs à la taille maximale des fragments n'auront pas de sauvegarde temporaire.
     
    $UpAbci_uniqidForm = hash("sha256",uniqid(rand(), true));
     
    // Jeton de formulaire (token);
    $_SESSION['UploadAjaxABCI'][$UpAbci_uniqidForm] = 1;
    ?>
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta charset="UTF-8" />
    <title>UploadAjaxABCI : upload de fichier avec Ajax/Jquery/Php/Html5</title>
    <style type="text/css">
    body {
    	font-size:1em;
    	font-family:Arial, Helvetica, sans-serif;
    }
     
    .form_evenement {
    	width:800px;
    	margin:3em auto 0 auto;
    	font-size:0.9em;
    	line-height:1.5em;	
    }
     
    .form_evenement progress { 
    	width:100px;
    }
    </style>
    </head>
    <body>
     
    <div class="form_evenement">
    <form id="form_base" action="#" method="post">
     <fieldset style="border:2px solid #000;border-radius:6px;padding:1em">
        <legend>Le titre est obligatoire</legend>
        <p><label>Titre <input autofocus required type="text" name="titre" maxlength="100" size="25" /></label></p>
        <p style="margin-top:2em;"><span class="option_upload" style="text-decoration:underline;cursor:pointer"> Cliquer ici pour ajouter un fichier</span> (facultatif)</p>
     
         <input type="hidden" value="<?=$UpAbci_fragmentSize?>" name="UpAbci_fragmentSize" />
         <input type="hidden" value="<?=$UpAbci_uniqidForm?>" name="UpAbci_uniqidForm" />
         <input type="file" name="fichier" style = "display:none" />
     
     
         <!-- Bloc conteneur du retour d'informations -->
         <div id="reponse_upload">     
     
            <!--information du fichier que l'on affiche uniquement si un fichier est soumis avec le style événementiel "data-upabcicss-select-file", pour éviter la barre de progression graphique vide si soumission du formulaire sans fichier-->
             <div class="UpAbci_infosFile" style="display:none;margin-top:1em;" data-upabcicss-select-file="display:block;">
             	<p>
                    - <span class="UpAbci_name"></span><!-- nom du fichier -->
                    <progress class="UpAbci_progressionG"></progress> <!-- progression graphique -->
                    <span class="UpAbci_status" data-upabcicss-result-error="color:red"></span><!-- status (important sinon pas de retour d'information) -->
                    <span class="UpAbci_stop" style="color:red;cursor:pointer;font-size:0.9em;float:right" data-upabcicss-result="display:none">stop</span>
              	</p> 
     
     
               <!-- Message qui s'affichera si l'upload du fichier a été arrêté manuellement par l'utilisateur (ce bloc doit être à l'intérieur du bloc ayant la class="UpAbci_infosFile")  -->
                <p style="display:none;margin-top:1em;" data-upabcicss-result-stop="display:block" >
                Arrêt du fichier. Rechargez ou changer votre fichier ou cliquer directement sur le bouton "envoyer" pour enregistrer l'événement sans fichier joint.
                </p>
     
     
                <!--Message qui s'affichera si erreur utilisateur (mauvaise extension) ou erreur serveur (ce bloc doit être à l'intérieur du bloc ayant la class="UpAbci_infosFile") -->
                <p style="display:none;margin-top:1em;" data-upabcicss-result-error="display:block" >
                Un problème est survenu. Rechargez ou changer votre fichier ou cliquer directement sur le bouton "envoyer" pour enregistrer l'événement sans fichier joint.
                </p>
             </div>
     
            <!-- Bloc conteneur du retour d'informations général renseigné par le script php d'upload (ce bloc doit être à l'intérieur du bloc ayant l' id="reponse_upload") -->
         	<div class="UpAbci_infosServer" style="display:none;font-size:1.1em;margin-top:1em;" data-upabcicss-infos-server="display:block;border:2px solid blue;padding:1em;border-radius:6px"></div>
     
        </div>
     
        <p style="text-align:center"><input type="submit" value="Envoyer" /></p>
     </fieldset>
    </form>
    <br>
    <br>
    <p>Notez qu'une sauvegarde automatique est effectuée tous les 8 Mo. Si vous avez téléchargé au minimum 8 Mo et que l'upload est stoppé avant la fin du téléchargement du fichier, vous pourrez utiliser la partie sauvegardée pour compléter ce fichier lors de sa prochaine sélection. La durée de disponibilité de la sauvegarde est paramétrable (par défaut = 24H).</p>
     
    </div>
     
     
    <script src="Javascript/jquery.js"></script>
    <script src="Javascript/UploadAjaxABCI.js"></script>
     
    <script type="text/javascript">
    // Initialisation de la classe javascript (identifiant formulaire, destination ajax, identifiant réponse)
    var up = new UploadAjaxABCI('#form_base','Php_Upload/UploadAjaxABCI_Php_Load_Basique_wwilly17.php','#reponse_upload');
     
    // configuration optionnelle. Voir le fichier "UploadAjaxABCI.php" pour plus d'infos.
     
    // config upoad sur élément html ayant la class "option_upload"
    up.config.customFileSelect = ".option_upload";
     
    // message de status du fichier si ok. Ce message sera complété par le message défini dans le script php d'upload et affiché dans le conteneur d'information générale du fichier ayant la class="UpAbci_infosServer"
    up.info.status.ok = 'Ok';
     
    // message de status du fichier si arrêt utilisateur. Ce message sera complété par le div ayant l'attribut  data-upabcicss-result-stop
    up.info.status.stop = 'Arrêt';
     
    // Personnalisation du message si erreur de téléchargement du fichier en provenance du serveur
    up.info.status.errorServer = 'Echec.';
     
    // Contrôle des extensions (le même contrôle doit être fait côté php par sécurité)
    up.config.filesExtensions = ['avi','divx','mp4','mkv','mpg','jpg','jpeg','png'];
     
    // Démarrage de la fonction, DOM chargé
    $(function(){up.Start()});
    </script>
     
    </body>
    </html>
    Il appelle un fichier php d'upload que j'ai nommé "UploadAjaxABCI_Php_Load_Basique_wwilly17.php". Ce nom est écrit en dur lors de l'initialisation de la classe javascript à la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var up = new UploadAjaxABCI('#form_base','Php_Upload/UploadAjaxABCI_Php_Load_Basique_wwilly17.php','#reponse_upload');)
    Contenu du fichier d'upload php "UploadAjaxABCI_Php_Load_Basique_wwilly17.php" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    <?php
    /*
    require 'UploadAjaxABCIServeur.php';
    */
    // Vous devez vérifier l'existence de ces dossiers ou changer ces adresses 
    /*------------------------------------------------------*/
    $dossier_destination = '../Destination_Upload1/';
    $dossier_temporaire = '../Upload_Temp/';
    /*------------------------------------------------------*/
     
    // Voir le fichier "UploadAjaxABCI_Php_Load.php" pour plus d'exemples détaillés.
     
    session_start();
     
    header('Content-type: text/html; charset=UTF-8');
     
    // Charge la classe php d'upload
    require 'UploadAjaxABCIServeur.php';
     
    //Initialisation de la classe php (dossier de destination, dossier temporaire)
    $up = new UploadAjaxABCIServeur($dossier_destination, $dossier_temporaire);
     
     
    // getParam("uniqid_form") renvoie l'identifiant de formulaire pour la vérification ci-dessous
    $uniqid_form = $up->getParam("uniqid_form");
     
    // Il est conseillé de ne pas supprimer cette ligne car c'est le token qui assure que ce script est appelé depuis le formulaire. Permet également de renvoyer un message en cas de timeout du serveur, connexion perdue ou non valide.
    if(!(isset($uniqid_form,$_SESSION['UploadAjaxABCI'][$uniqid_form]))) $up->exitStatusErreur("Connexion non valide ou perdue. Rafraîchissez la page et recharger votre fichier, si celui-ci dispose d'une sauvegarde automatique elle sera utilisée."); 
     
    // ici on récupère le titre
    $titre = isset($_POST['titre'])?  urldecode($_POST['titre']) : null;
     
    // si titre vide (contrôle de sécurité si le formulaire a été piraté)
    if(trim($titre) == '')// permet d'éviter un titre composé uniquement d'espaces vide
    {
    	// On envoir un message dans le bloc conteneur du retour d'informations général (ayant la class="UpAbci_infosServer"). 
    	$up->addInfosServer('Le titre est obligatoire.');
    }
    else if($up->getFragment()) // si un fichier est joint
    {
    	// getCleanFileName() retourne le nom du fichier nettoyé
    	$nom_fichier_nettoye = $up->getCleanFileName();
     
    	// getParam("name") retourne le nom du fichier original (si besoin)
    	//$nom_fichier_originel = $up->getParam("name");
     
    	// Si vous faites des contrôles côté javascript il faut impérativement refaire les mêmes ici par sécurité.
    	// Contrôle des extensions autorisées HAUTEMENT RECOMMANDE ex :
    	$filesExtensions = array('avi','divx','mp4','mkv','mpg','jpg','jpeg','png');
    	$verif_extension = $up->VerifExtensions($nom_fichier_nettoye,$filesExtensions);
     
    	if($verif_extension == false) 
    	{
    		// Utilisez la fonction "exitStatusErreur ($value)" pour sortir du script en ajoutant un message qui sera concaténé au statut "info.status.erreur" de la classe javascript et envoyé dans le bloc html ayant la classe "UpAbci_status"
    		$up->exitStatusErreur('Extension non valide.');
    	}
     
    	// on fait l'upload
    	$up->Upload();
     
    	// Si besoin on peut vérifier si le fichier est complet pour faire d'autres contrôles avant de le transférer 
    	$fichier_complet = $up->getTempAdressFileComplete();
     
    	if($fichier_complet != false)
    	{
    		// Ici on pourrait faire par exemple une requête en bdd pour voir si le titre existe déjà afin d'éviter d'écraser un titre existant.
    		// Vérification en bdd en fonction de $titre
    		//...
    		// if ($bdd_ok) ...
     
    		// Si tout est ok on peut transférer le fichier avec la fonction Transfert
    		$transfert = $up->Transfert();
    		if($transfert != false)
    		{
    			// traitement en bdd 
     
    			// enregistrement du nom du fichier $nom_fichier_nettoye et du titre $titre en bdd ...
    			// if ($bdd_ok) ...
     
    			// On envoir un message dans le bloc conteneur du retour d'informations général (ayant la class="UpAbci_infosServer")
     
    			$up->addInfosServer('Evénement enregistré : Titre "'.$titre.'" et fichier "'.$nom_fichier_nettoye.'"');
    		}		
    	}
    }
    else // si  pas de fichier joint au formulaire
    {
    	// traitement en bdd
     
    	// enregistrement titre $titre en bdd ...
    	// if ($bdd_ok) ...
     
    	// On envoir un message dans le bloc conteneur du retour d'informations général (ayant la class="UpAbci_infosServer")
     
    	$up->addInfosServer('Evénement enregistré : Titre "'.$titre.'" (pas de fichier joint)');	
    }
     
    // INDISPENSABLE en fin de script, "exitReponseAjax()" retourne les informations nécessaires pour la requête ajax.
    $up->exitReponseAjax();
    ?>
    Lis les commentaires dans les deux fichiers... Pour faire le test tu mets le premier fichier au même niveau que "UploadAjaxABCI_Basique.php". Et le second au même niveau que "UploadAjaxABCI_Php_Load_Basique.php" (dans le dossier "Php_Upload"). Les deux fichiers possèdent un contrôle des extensions à modifier selon tes besoins.

    Cela fonctionne comme tu veux ? Si oui dis-le moi et réponds aussi à la question de savoir si tu as besoin du dossier "Upload_Temp" dont on a parlé tout à l'heure (pour télécharger des gros fichiers et/ou avoir une sauvegarde automatique durant l'upload). En fonction de ça je te ferai des remarques pour finaliser complétement le processus.

    Sinon j'avais oublié de te répondre pour le dossier "jquery.imgareaselect-10-0-rc-1". Il est indispensable uniquement si tu veux faire du crop (il n'est utilisé que par les exemples de crop).

  19. #19
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2015
    Messages : 135
    Par défaut
    Bonjour à toi,
    Tout d abord merci pour le travail effectué ..c est super sympa..
    Je vais tester tout ça ce week end et je te donnerai des nouvelles dimanche ou lundi ..a priori de ce que viens de lire ça a l air complet et correspondant au besoin..
    Encore merci je teste et je reviens vers toi.

  20. #20
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2015
    Messages : 135
    Par défaut
    re bonsoir
    bon je n ai pas attendu j ai tester ton code ce soir, et impeccable ca me convient ..
    juste peut etre 2 petites chose que je modifierai si j etais toi :
    1- tester si le fichier existe deja et mettre un message d erreur si il y a deja un fichier avec le meme nom..afin de prevenir l utilisateur et pour eviter d ecraser des fichiers existants..
    2- peux t on remettre a zero le formulaire quand l' enregsitrement est effectue ( message de confirmation ok ) , j entend par la , les champs de saisie et le champ indiquant le fichier et le status "ok" , si on pouvait tout remettre a blanc ?
    encore merci en tout cas ...

Discussions similaires

  1. Souci upload avec plusieurs input files
    Par L0101SA dans le forum Langage
    Réponses: 1
    Dernier message: 28/01/2011, 10h35
  2. Problème d'intégration avec l'input [file]
    Par Sayrus dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 21/01/2011, 10h03
  3. [AJAX] .serialize avec des input files
    Par misakilou dans le forum AJAX
    Réponses: 1
    Dernier message: 30/10/2010, 20h39
  4. submit bizarre avec un input file.
    Par hibour dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 23/11/2009, 17h23
  5. Réponses: 3
    Dernier message: 07/10/2008, 11h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo