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

JSF Java Discussion :

Probleme avec rich:fileUpload


Sujet :

JSF Java

  1. #1
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 107
    Points : 43
    Points
    43
    Par défaut Probleme avec rich:fileUpload
    Salut
    J'essai d'uploader un fichier PDF dans un répertoire, comme suit:
    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
    private UploadItem item;
     
    	public void listener(UploadEvent event) throws IOException {
    		FileChannel in = null; // canal d'entrée
    		FileChannel out = null; // canal de sortie
    		String Dest="C:/testupload/";  // repertoire de destination.
     
    	        item = event.getUploadItem();
    	        String filename = item.getFileName();
    	        Dest=Dest+filename.substring(filename.lastIndexOf("\\")); // prendre le chemin du fichier source (fichier aploadé)
    	        in = new FileInputStream(filename).getChannel();
    			out = new FileOutputStream(Dest).getChannel();
    			in.transferTo(0, in.size(), out); // copier.  
     
    	}
    // avec getter et setter pour item
    Je reçoit l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    WARN  [lifecycle] org.apache.jasper.el.JspELException: /addArt.jsp(75,3) '#{fileUploadBean.listener}' java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    javax.faces.el.EvaluationException: org.apache.jasper.el.JspELException: /addArt.jsp(75,3) '#{fileUploadBean.listener}' java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    	at org.richfaces.webapp.taglib.MethodBindingMethodExpressionAdaptor.invoke(MethodBindingMethodExpressionAdaptor.java:73)
    avec "Transfer error occured" sur le formulaire web. (le répertoire je l'ai déja créé à l'avance)
    Merci

  2. #2
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 107
    Points : 43
    Points
    43
    Par défaut
    Aucune idée?

  3. #3
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    Citation Envoyé par aniss77 Voir le message
    Aucune idée?
    utilise ton debugguer voir ce qui se passe dans la méthode listener;

    le problème vient probablement du la ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dest=Dest+filename.substring(filename.lastIndexOf("\\"));

  4. #4
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 107
    Points : 43
    Points
    43
    Par défaut
    Merci Sniper
    c'est presque résolu
    Je peux uploader mes fichier, et les référencier dans ma base de données.
    Mais mon probleme maintenant c'est comment récupérer le chemin des fichiers uploader? Je veux bien les uploader sur un autre chemin
    Car j'on est besoin pour la fonction de Download.
    J'ai vu dans un autre sujet que la méthode File.renameTo(), a résolu le probleme pour qq1, mais je saits pas comment l'utiliser, car ça prend un File comme parametre, et non une chaine de caractere indiquant un chemin ...

  5. #5
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    tu mets quoi en base?? tu récupérer le fichier avec l'upload, tu fais ce que tu veux, sauvegarder le flux e byte en base, ou créer un nouveau fichier le renommer et le mettre sur un serveur FTP..

  6. #6
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 107
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par Sniper37 Voir le message
    tu mets quoi en base?? tu récupérer le fichier avec l'upload, tu fais ce que tu veux, sauvegarder le flux e byte en base, ou créer un nouveau fichier le renommer et le mettre sur un serveur FTP..
    Je récupere et j'insere dans la base le nom et le type de fichier.
    Et je veux bien récupérer le chemin, et le changer vers la racine par exemple.

  7. #7
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    le chemin ça ne sert à rien, c'est un fichier du client, tu ne peux pas sauvegarder le chemin pour chaque utilisateur, ce que tu peux faire c'est récupérer le fichier et mettre le flux de byte en base, tu pourra comme ça recréer le fichier, sinon, mettre le fichier sur un serveur FTP et sauvegarder en base le nom et le chemin.

  8. #8
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 107
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par Sniper37 Voir le message
    le chemin ça ne sert à rien, c'est un fichier du client, tu ne peux pas sauvegarder le chemin pour chaque utilisateur, ce que tu peux faire c'est récupérer le fichier et mettre le flux de byte en base, tu pourra comme ça recréer le fichier, sinon, mettre le fichier sur un serveur FTP et sauvegarder en base le nom et le chemin.
    1- J'ai bien voulu que les fichier uploadés soient dans le dossier que je spécifie moi meme.
    2- Je vais faire le download par quels références?? normalement je doit avoir le nom et le path, non?

  9. #9
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    Citation Envoyé par aniss77 Voir le message
    1- J'ai bien voulu que les fichier uploadés soient dans le dossier que je spécifie moi meme.
    Si après l'upload, tu prend le fichier et tu le place sur le serveur, tu peux garder le path du fichier.
    Citation Envoyé par aniss77 Voir le message
    2- Je vais faire le download par quels références?? normalement je doit avoir le nom et le path, non?
    Dans le path il y'a le nom, tu peux récupérer ton fichier s'il est sur ton serveur ou sur un serveur FTP, et si tu mets le flux de byte, c'est à dire le contenu du fichier en base de données, tu peux recréer le fichier quand tu veux et l'envoyer à l'utilisateur.

  10. #10
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 107
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par Sniper37 Voir le message
    Si après l'upload, tu prend le fichier et tu le place sur le serveur, tu peux garder le path du fichier.


    Dans le path il y'a le nom, tu peux récupérer ton fichier s'il est sur ton serveur ou sur un serveur FTP, et si tu mets le flux de byte, c'est à dire le contenu du fichier en base de données, tu peux recréer le fichier quand tu veux et l'envoyer à l'utilisateur.
    Effectivement,
    mais comment récupérer le Path pour rich:upload??
    Est ce qu'on peut pas changer ce path pour le gérer??
    Car ça peut arriver un jour qu'on veut récupérer ce path, pour réinstallation du systeme par exemple....

  11. #11
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    Je ne sais pas ce que tu veux faire exactement, j'ai l'impression que tu mélange l'uplaod et le downlaod..
    tu récupère déjà le path avec l'objet UploadItem, mais, tu ne peux pas dans une autre session l'utiliser, ça n'a pas de sens, à moins que ce soit un autre fichier upload.

  12. #12
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 107
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par Sniper37 Voir le message
    Je ne sais pas ce que tu veux faire exactement, j'ai l'impression que tu mélange l'uplaod et le downlaod..
    tu récupère déjà le path avec l'objet UploadItem, mais, tu ne peux pas dans une autre session l'utiliser, ça n'a pas de sens, à moins que ce soit un autre fichier upload.
    Je mélange pas, d'ailleur c'est pourcela que je veux garder le chemin du fichier uploadé dans la base. pour pouvoir faire le Download aprés (session différente).

  13. #13
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    et le problème alors? si tu fais l'uplaod tu sauvegarde le fichier, quelque part et le chemin en base.

  14. #14
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 107
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par Sniper37 Voir le message
    et le problème alors? si tu fais l'uplaod tu sauvegarde le fichier, quelque part et le chemin en base.
    Mais je vous ai dit le probleme:
    Via quel manip je peux avoir le chemin???
    j'ai faits comme ça, mais il m'affiche erreur de type nullpointerexception:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String path=uploaditem.getFile().getPath();
    System.out.println(path);
    le nom par exemple , je l'aurais en faisant: uploaditem.getFileName()
    mais je trouve pas uploaditem.getFilePath()

  15. #15
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    tu as vérifié ec qu'il y'a dans le name?
    il y'a le path complet.

    si tu veux créer un fichier il suffit de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File f = new File(uploadItem.getFileName());

  16. #16
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 107
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par Sniper37 Voir le message
    tu as vérifié ec qu'il y'a dans le name?
    il y'a le path complet.

    si tu veux créer un fichier il suffit de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File f = new File(uploadItem.getFileName());
    Voila, j'ai changé comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    File file = new File(uploadItem.getFileName());
    System.out.println(file.getAbsolutePath());
    //System.out.println(file.getPath()); ne marche pas, me rends juste le nom du fichier
    Il m'affiche le chemin suivant: C:\jboss-4.2.2\bin\fichier.pdf
    1- Mais dans ce chemin je trouve pas de fichiers PDFs, y'a certaines transformations ou quoi??
    2- Si c'est le bon chemin, je peux pas le changer?? sur la racine par exemple.

  17. #17
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    il faut sauvegarder le fichier, il est créé temporairement, tu veux le copier quelque part ?

    dans uploadItem, tu as déjà getFile() et getData(), la deuxième retourne le flux de bytes. Donc, avec tout ça tu peux faire ce que tu veux, et si tu as des soucis avec la gestion de fichiers, regarde un peu le forum ou les tutoriels de java.io.

  18. #18
    Membre à l'essai
    Femme Profil pro
    Développeur Java
    Inscrit en
    Février 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 45
    Points : 23
    Points
    23
    Par défaut
    Bonjour,
    Je cherche moi aussi un composant JSF/RichFaces qui me permets de récupérer le path, j'ai déjà entré un post là dessus.

    A priori, pour raison de sécurité les composants ne retourne pas le path ! Et ça dépend aussi du browser, il me semble que IE ne retourne pas mais FireFox oui, mais je ne sais pas si ça a changé ...

    Mon pb est tout différent de celui là, je ne fais ni upload ni download. Mon application java sur le serveur fait des traitements de fichier et faut que l'utilisateur, qui dialogue avec l'appli à travers une interface web, puisse indiquer au server le path où se trouve les fichiers à traiter. L'appli le traite puis renvoi des données à afficher dans un dataTable.

    Pour l'instant j'ai mis un input text et l'uti est obligé de connaitre le chemin et de le taper complètement à la mano ! Pas top !!!

    J'aimerais afficher un composant qui lui permet de faire "Parcourir", puis récupérer le path ... mais toujours pas trouver. Any idea ?

    Merci d'avance.

  19. #19
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 107
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par nhunhu Voir le message
    Bonjour,
    Je cherche moi aussi un composant JSF/RichFaces qui me permets de récupérer le path, j'ai déjà entré un post là dessus.

    A priori, pour raison de sécurité les composants ne retourne pas le path ! Et ça dépend aussi du browser, il me semble que IE ne retourne pas mais FireFox oui, mais je ne sais pas si ça a changé ...

    Mon pb est tout différent de celui là, je ne fais ni upload ni download. Mon application java sur le serveur fait des traitements de fichier et faut que l'utilisateur, qui dialogue avec l'appli à travers une interface web, puisse indiquer au server le path où se trouve les fichiers à traiter. L'appli le traite puis renvoi des données à afficher dans un dataTable.

    Pour l'instant j'ai mis un input text et l'uti est obligé de connaitre le chemin et de le taper complètement à la mano ! Pas top !!!

    J'aimerais afficher un composant qui lui permet de faire "Parcourir", puis récupérer le path ... mais toujours pas trouver. Any idea ?

    Merci d'avance.
    essaie avec : file.getAbsolutePath()), comme j'ai mentionné.
    Car cette fonction me rends un path, mais quand je parcours ce chemin je trouve pas réellement mes fichier uploadés.
    Donc, de ma parts je vais tester le download, via le meme nom de fichier, et avec ce path, et je vais voir si ça donne qques choses..

  20. #20
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    Avec l'upload, vous avez le fichier, l'objet File, et son contenu avec getData, avec ceci vous pouvez copier le fichier où vous voulez et sauvegarder le nouveau path, le premier path du client ne peut pas être utilisé.
    Donc, je ne vois pas pourquoi chercher à sauvegarder le path du client..ça va changer par session utilisateur, par système, par navigateur.. ça n'a pas de sens de le sauvegarder.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/01/2009, 21h30
  2. problem avec rich:paint2D
    Par iviath dans le forum JSF
    Réponses: 1
    Dernier message: 20/10/2008, 17h04
  3. Probleme avec <rich:fileUpload>
    Par hibao dans le forum JSF
    Réponses: 10
    Dernier message: 16/10/2008, 12h26
  4. Probleme avec Rich:panelMenu
    Par midos dans le forum JSF
    Réponses: 1
    Dernier message: 08/09/2008, 08h29
  5. Probleme avec rich:fileupload
    Par solarien dans le forum JSF
    Réponses: 6
    Dernier message: 21/08/2008, 17h06

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