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 :

[JSF + File] ouvrir un fichier


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 12
    Par défaut [JSF + File] ouvrir un fichier
    Bonjour,

    Grâce à un composant UploadFile de richfaces, j'ai enregistré mon fichier en base de donnée, après l'avoir converti en "byte[]"...

    Désormais, je voudrais depuis un lien cliquable, ou une image cliquable peu importe, cliquer dessus et le rouvrir dans une nouvelle fenêtre, donc selon son extension.

    J'ai converti mon byte[] en File, pour le réafficher ... mais sur clique du lien rien ne se passe.

    C'est évident car je ne connais pas le chemin de ce fichier ...

    y a t'il un composant qui fasse cela ? html ? Richface ? JSF ?

    Merci!

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 12
    Par défaut
    Je relance, car ma question est peut être stupide, cependant, j'ai eu beau chercher et rien ne réponds à mon problème ...

    à moins qu'une fonction basique javascript du type "open" réponde à mon besoin, mais le souci, c'est le chemin, l'url ou l'URI, je ne sais vraiment pas quoi lui indiquer vu que le fichier vient de la BD en tableau de Byte ...

  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
    Par défaut
    Lorsque tu crée un nouveau fichier, il est automatiquement sauvegardé dans le fichier temp, mais, le problème ce n'est pas ça, il faut mettre le flux de byte dans la response.
    Il y'a eu pas mal de posts traitant ce sujet, avec la fonction recherche tu trouvera la réponse.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 12
    Par défaut
    Salut,

    Merci, pour cette petite réponse, même si cela ne m'aide pas tellement, j'ai cherché et ai trouvé un intitulé de post qui ressemblait à ce que je faisais, mais c'est de "ASP.net"...

    Je post ce que j'ai fais, on ne sait jamais :

    1°) Convertissage de mon fichier en Byte[]
    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
     
     public byte[] FileToByte(java.io.File fichier) throws IOException {
        	InputStream is = new FileInputStream(fichier);
        	long length = fichier.length();
     
        	if (length>Integer.MAX_VALUE){
        		System.out.println("fichier trop gros");
        	}
     
        	byte[] tableau = new byte[(int) fichier.length()];
     
        	int offSet = 0;
        	int numRead = 0;
        	while (offSet < tableau.length && (numRead=is.read(tableau, offSet,tableau.length-offSet)) >= 0) {
        		offSet += numRead;
        	}
     
        	if (offSet < tableau.length) {
        		throw new IOException("Ne peut pas lire le fichier " +fichier.getName()+ " complétement.");
        	}else {
        		System.out.println("Fichier lu correctement...");}
     
        	is.close();
     
        	return tableau;
        }
    2°) insertion dans la base ....

    3°) Conversion de mon Byte[] en File pour affichage (mais peut être peut on travailler directement sur le tableau de byte?)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public File getFile() throws IOException {
    		File f = new File(this.name);
    		FileOutputStream fos = new FileOutputStream(f);
    		fos.write(this.fichier);
    		fos.flush();
    		fos.close();
    		this.file = f;
    		return file;
    	}
    4°) ET comment j'essaye d'ouvrir le lien, surement là qu'est le problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <h:outputLink value="#{file.file}" >#{file.file}</h:outputLink>
    Aussi, je ne veux pas que le navigateur ouvre le fichier dans la page web, mais que en fonction de l'extension, il me l'ouvre avec le bon logiciel, ou me donne une fenêtre lié au navigateur qui me propose de choisir le logiciel pour l'ouvrir avec un "ouvrir avec" !

  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
    Par défaut
    voilà un exemple;
    Il faut un h:commandButton et une action pour télécharger le fichier.

Discussions similaires

  1. open files: comment ouvrir plusieurs fichiers?
    Par m_informat dans le forum Fortran
    Réponses: 4
    Dernier message: 24/10/2011, 11h12
  2. Ouvrir un fichier avec File-aide
    Par a_karim_fr dans le forum z/OS
    Réponses: 4
    Dernier message: 11/05/2011, 12h06
  3. comment ouvrir un fichier avec File-aid
    Par a_karim_fr dans le forum z/OS
    Réponses: 1
    Dernier message: 09/05/2011, 11h13
  4. Réponses: 1
    Dernier message: 22/12/2010, 13h55
  5. Ouvrir un fichier avec le protocole file
    Par marco10024 dans le forum Langage
    Réponses: 2
    Dernier message: 24/09/2008, 11h39

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