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

AJAX Discussion :

[AJAX] Sujet : Upload AJAX + JSP avec iframe et apache.commons.fileupload


Sujet :

AJAX

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Par défaut [AJAX] Sujet : Upload AJAX + JSP avec iframe et apache.commons.fileupload
    Bonsoir à tous,

    Comme indiqué dans le sujet, je cherche à uploader un fichier client par Ajax avec l'API commons.FileUpload
    Je débute à peine avec Ajax, mais ai lu sur différents sites que normalement Ajax ne permet pas l'envoi de fichier. J'ai lu toutefois qu'il était possible de feinter en utilisant une iframe ( ça m'échappe pour le moment ).
    J'essaie donc cette technique, mais sans résultat pour le moment

    Voici donc mon code actuel :
    - côte HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <FORM method="POST" name="ATTACHFORM" enctype="multipart/form-data; boundary=--_01C922E9.D3E367F0" target="myFrame" >
    <div id="NEW_FIC" style="display:'<%=displayNewFic%>';">
            <input size="1" id="newpj" name="newpj" onchange="submitDoc();" type="file"/>
    </div>
    </FORM>
    <iframe id="myFrame" name="myFrame"></iframe>
    - côté js :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function submitDoc()
            {
                    http.open("POST", url , true);
                    http.onreadystatechange = handleHttpResponse;
                    http.setRequestHeader("Content-Type", "multipart/form-data; boundary=--_01C922E9.D3E367F0");
                    data = "noAD=test";
                    http.send(data);
    	}
    - côté JSP :
    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
       boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    FileItemFactory factory = new DiskFileItemFactory();
    ServletFileUpload upload = new ServletFileUpload(factory);
    List items = upload.parseRequest(request);
    Iterator iter = items.iterator();
    while (iter.hasNext()) {
        FileItem item = (FileItem) iter.next();
     
        if (item.isFormField()) {
        String name = item.getFieldName();
        String value = item.getString();
        } else {
        String fieldName = item.getFieldName();
        String fileName = item.getName();
        String contentType = item.getContentType();
        boolean isInMemory = item.isInMemory();
        long sizeInBytes = item.getSize();
        File uploadedFile = new File(...);
        }
    }
            }
    Mon problème est donc que items est toujours de taille = 0.
    Je ne sais pas si cela vient du boundary que je ne précise pas dans la récupération ( si oui comment faire ? ) ou alors si il y a qqchose à faire avec l'iframe en javascript...

  2. #2
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,
    Je débute à peine avec Ajax, mais ai lu sur différents sites que normalement Ajax ne permet pas l'envoi de fichier.
    Effectivement, donc le résultat obtenu en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                    http.open("POST", url , true);
                    http.onreadystatechange = handleHttpResponse;
                    http.setRequestHeader("Content-Type", "multipart/form-data; boundary=--_01C922E9.D3E367F0");
    est voué à un certain échec

    Et ce n'est pas l'API commons.FileUpload qui changera quelque chose car elle ne sert qu'à séparer les données des fichiers uploadés des données standards du formulaire, et ne concerne QUE le server.

    Effectue un simple submit de ton formulaire: il sera posté vers le server mais ne rechargera pas ta page car sa cible est un iframe que tu peux cacher. Ce qui donne l'impression de "feinter", selon ton expression

    Une autre technique pour posterdiscrètement un fichier vers le server en feintant et de passer par un objet Flash.

    ERE

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Par défaut
    Bonsoir,

    Merci bcp pour ta réponse.
    Ainsi, il n'y a pas d'Ajax du tout dans cette façon de faire...
    Il y avait des abus de langage sur les différents sites que j'ai lus qui parlaient de méler Ajax + upload + iframe...

  4. #4
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Par défaut
    Si tu as encore qq secondes à m'accorder, comment comprends tu l'exemple suivant :
    http://www.roseindia.net/ajax/File-Upload.shtml ?
    A quoi sert Ajax, selon toi ?
    Merci d'avance

  5. #5
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Re,
    Citation Envoyé par atomheartdude Voir le message
    Si tu as encore qq secondes à m'accorder, comment comprends tu l'exemple suivant :
    http://www.roseindia.net/ajax/File-Upload.shtml ?
    A quoi sert Ajax, selon toi ?
    Merci d'avance
    AJAX sert à appeler à intervalle régulier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.setTimeout("ajaxFunction();", 100);
    le server pour savoir où en est le téléchargement et ainsi afficher une barre de progression sur le poste client.

    ERE

  6. #6
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Par défaut
    Très bien, c'est très clair.
    Merci infiniment pour tes réponses!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec import org.apache.commons.io.CopyUtils;
    Par jacko842 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 21/02/2014, 15h13
  2. Upload servlet/JSP avec FileUpload
    Par Invité dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 24/12/2010, 14h01
  3. Upload cancel [org.apache.commons.fileupload]?
    Par kescatefou dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 26/08/2008, 13h34
  4. [AJAX] Multi upload Ajax
    Par popovitch130 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 22/05/2008, 18h29
  5. Réponses: 3
    Dernier message: 08/05/2006, 23h31

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