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

Développement Web en Java Discussion :

Upload de fichier J2EE


Sujet :

Développement Web en Java

  1. #1
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut Upload de fichier J2EE
    Salut je tente un upload de fichier en J2EE avec un formulaire et la balise <input type="file"...
    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
     import java.io.File;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Iterator;
    import java.util.List;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.FileUploadException;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;
     
    [...]
                   try {
                    DiskFileItemFactory factory = new DiskFileItemFactory();
                    factory.setSizeThreshold(5000);
                    factory.setRepository(new File("/tmp"));
                    ServletFileUpload upload = new ServletFileUpload(factory);
                    upload.setSizeMax(Datas.MAXSIZEPHOTOS);
                    List items = upload.parseRequest(request);
                    Iterator iter = items.iterator();
                    while (iter.hasNext()) {
                        FileItem item = (FileItem) iter.next();
                        if (item.isFormField()) {
     
                            } else {
                            String fileName = item.getName();
                            try {
                                item.write(new File(fileName));
                            } catch (Exception ex) {
                                Logger.getLogger(Inscription2.class.getName()).log(Level.SEVERE, null, ex);
                            }
                        }
                        }
                    }
                catch (FileUploadException ex) {
                    Logger.getLogger(Inscription2.class.getName()).log(Level.SEVERE, null, ex);
                }           }
    ça ne marche pas apparemment tomcat ne me trouve pas une classe :
    exception

    javax.servlet.ServletException: L'exécution de la servlet a lancé une exception

    cause mère

    java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream
    org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:199)
    org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:361)
    org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
    servlets.Inscription2.doPost(Inscription2.java:112)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

    cause mère

    java.lang.ClassNotFoundException: org.apache.commons.io.output.DeferredFileOutputStream
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1484)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1329)
    org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:199)
    org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:361)
    org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
    servlets.Inscription2.doPost(Inscription2.java:112)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    et rien dans mon catalina.out
    J'ai cherché sur google en partant de l'erreur, mais ils disent de bien ajouter le jar au projet, ce que je fais.
    Merci pour votre aide

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    il manque le jar de commons-io dans ton projet.

  3. #3
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut
    En effet, il n'y a plus d'erreur, merci.

  4. #4
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut
    argh ya plus l'erreur mais j'upload rien, j'ai longtemps cherché mais pas moyen de comprendre comment faire pour avoir le chemin relatif par apport a mon application, j'ai créé un repertoire datas/photos et pour l'upload je met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                            try {
                              item.write(new File("./datas/photos/photo.jpg"));
                            } catch (Exception ex) {
                                Logger.getLogger(Inscription2.class.getName()).log(Level.SEVERE, null, ex);
                            }
    Seulement aucun fichier photo.jpg n'apparait, j'ai bien testé l'erreur vient du write, mais je pense que c un problème de chemin.
    Merci

  5. #5
    Membre éclairé Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Points : 882
    Points
    882
    Par défaut
    Tu recherches cela, ou quelque chose qui s'en approche : (?)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    String path=pageContext.getServletContext().getRealPath("/datas/photos/photo.jpg");
    try{
     item.write(new File(path));
    } catch (Exception ex) {
     Logger.getLogger(Inscription2.class.getName()).log(Level.SEVERE, null, ex);
    }

  6. #6
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut
    Salut, j'ai essayé plusieurs trucs jusqu'à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                            try {
                                String path=getServletContext().getRealPath("datas/photos/photo.jpg");
                              item.write(new File(path));
                            } catch (Exception ex) {
                                Logger.getLogger(Inscription2.class.getName()).log(Level.SEVERE, null, ex);
                            }
    qui me donne un chemin en partant de /home/.../datas/photos/photo.jpg
    mais je tombe tout le temps dans le catch

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    getRealPAth -> tu n'a ni de garanti qu'il existe, ni qu'il est inscriptible, par contre tu a la garantie qu'il sera effacé au prochain déploiement

    Pour stocker des données uploadée de manière définitive, il faut t'attribuer un répertoire de stockage en dehors de la webapp et, d'une manière ou d'un autre, renseigner ce répertoire à ton application, via par exemple un fichier de config.

  8. #8
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    getRealPAth -> tu n'a ni de garanti qu'il existe, ni qu'il est inscriptible, par contre tu a la garantie qu'il sera effacé au prochain déploiement

    Pour stocker des données uploadée de manière définitive, il faut t'attribuer un répertoire de stockage en dehors de la webapp et, d'une manière ou d'un autre, renseigner ce répertoire à ton application, via par exemple un fichier de config.
    En effet je n'avais pas vu ce "problème", j'ai encore les réflexe d'un codeur PHP c'est pour ça Sinon oui j'ai créé un répertoire spécial (/home/datas/site...) en mode prod ça craint pas trop ? (car en fait ce sont des photos que je ré-afficherai dans le site).
    Merci !

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    c'est poru ca qu'on rend le répertoire configurable d'une manière ou d'un autre, pour qu'en "prod" on puisse choisir l'endroit le plus approprié

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

Discussions similaires

  1. [FTP] Problème pour uploader un fichier
    Par Crazyblinkgirl dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 07/01/2008, 22h21
  2. Upload de fichier par XMLHTTP
    Par Immobilis dans le forum ASP
    Réponses: 6
    Dernier message: 21/01/2005, 17h02
  3. upload de fichier
    Par 120 dans le forum ASP
    Réponses: 16
    Dernier message: 21/06/2004, 12h07
  4. Upload de fichiers sur un ftp
    Par Crazyblinkgirl dans le forum ASP
    Réponses: 10
    Dernier message: 20/06/2004, 11h55
  5. Upload de fichiers
    Par GDVL dans le forum ASP
    Réponses: 4
    Dernier message: 03/06/2004, 12h44

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