Comment ouvrir fichier (bmp, txt) avec java

algod Messages postés 165 Date d'inscription   Statut Membre Dernière intervention   -  
algod Messages postés 165 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour

Je reprends une application (gestion de bugs) où les utilisateurs peuvent mettre des pièces jointes (image, txt) dans leur signalement. Ces pièces jointes sont enregistrées dans une base de données (blob).

Lorsque le développeur veut voir la pièce jointe, celle-ci est copiée sur son disque (personnellement je l'aurais mise en mémoire, mais c'est pas moi qui est fait le code et je peux pas le changer) puis la pièce jointe doit être ouverte.

A partir de la servlet, j'arrive à lancer une application ( par exemple notepad ou paint) mais pas le fichier en lui même. Pour cela j'utilise : Runtime.getRuntime().exec("C:\\WINDOWS\\notepad.exe");

A partir de la page jsp, je n'arrive pas à ouvrir le fichier (Warning, erreur sur la page : accès refusé avec IE7) avec un javascript (fait par mon prédécesseur) :
function redirect(){
var zip = '<%=form.getNom_fichier()%>';
parent.location=zip;
}

Dans form.getNom_fichier() il y a le lien vers le fichier ( "C:\toto\mimi.txt" )

Avec Firefox2, j'ai le message : "Firefox ne sait pas ouvrir cette adresse car le protocole (d) n'est associé à aucun programme".

Le lien vers le fichier apparaît aussi dans un champ texte et quand on recopie ce lien dans un onglet, le fichier s'ouvre dans l'onglet.

Est-ce que quelqu'un aurait une idée, que ce soit dans la servlet ou dans la page jsp ?

Je travaille sous websphere(eclipse) avec struts (je débute avec struts).

Merci.

P.S. : Je ne pourrais répondre aux questions qu’à partir de demain matin.
A voir également:

6 réponses

algod Messages postés 165 Date d'inscription   Statut Membre Dernière intervention   23
 
J'ai trouvé une solution (partielle), j'utilise l'invite de commande dans la servlet :

String lienFichier = demandeFormBean.getNom_fichier();
if (!lienFichier.contains(" "))
{
Runtime r = Runtime.getRuntime();
r.exec("cmd /c start " + lienFichier);
}

le seul problème, c'est que s'il y a un espace dans le nom du fichier, ca ne lance pas le fichier.

C'est pas grave, je ferai avec.
0
teebo Messages postés 33491 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
Salut,
Rajoutes des " autour du nom de ton fichier...
0
algod Messages postés 165 Date d'inscription   Statut Membre Dernière intervention   23
 
Merci de ta réponses mais ca marche pas.

Avec des " l'invite de commande s'ouvre et ne fait rien et avec des ' ca change rien.

Ce que je vais essayer, c'est lors de l'enregistrement, de remplacer les " " par des "_" .
0
Utilisateur anonyme
 
Salut,

Runtime r = Runtime.getRuntime();
r.exec("cmd /c start " + lienFichier);

Essayer :

r.exec(new String[]
{"cmd\\c start", lienFichier});


Par exemple ceci:

runtime.exec(new String[]
{ "C:\\Program Files\\Adobe\\Reader 8.0\\Reader\\AcroRd32.exe",
"C:\\Mes programmes\\T07GR-F.pdf"});

fonctionne parfaitement.

Cordialement

Dan
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
algod Messages postés 165 Date d'inscription   Statut Membre Dernière intervention   23
 
merci

j'ai essayé :
r.exec(new String[] {"C:\\Program Files\\Adobe\\Acrobat 7.0\\Reader\\AcroRd32.exe", "C:\\Temp\\fic a ouvrir.pdf"}); et ca fonctionne très bien r.exec(new String[]{"C:\\Program Files\\Adobe\\Acrobat 7.0\\Reader\\AcroRd32.exe",lienFichier }); aussi d'ailleurs

mais r.exec(new String[] {"cmd\\c start", "C:\\Temp\\fic a ouvrir.pdf"}); ne fonctionne pas, ainsi que r.exec(new String[] {"cmd\\c start", lienFichier});

Je pourrais faire une boucle pour tester l'expension et mettre les liens vers les applications à ouvrir, mais l'utilisateur n'aura pas forcément installer l'application sur son poste où à l'endroit que je désignerai.

Je vais laisser (pour le moment) comme c'est, en n'ouvrant que ceux qui n'ont pas d'espace dans le nom et indiquer le chemin pour les autres. Y a d'autres petit bug en attente.

Merci a tous pour vos réponses.
0
teebo Messages postés 33491 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
Salut,

essaye r.exec ("cmd\\c start \"c:\\temp\\fic a ouvrir.pdf\"")

-1
algod Messages postés 165 Date d'inscription   Statut Membre Dernière intervention   23
 
Merci mais ca ne fonctionne toujours pas.

Bon, j'ai résolue en partie mon problème, au moment de l'enregistrement des pieces jointes, je remplace les espaces par le caractère souligné ( _ ) . C'est surement pas la meilleure solution mais ca fonctionne.

Merci à ceux qui m'ont répondu.
0