[Applet] Ouvrir un fichier local dans un navigateur web

Ouvrir un fichier local dans un navigateur web [Applet] - Java - Programmation

Marsh Posté le 29-06-2006 à 14:24:05    

Bonjour,
 
 
J'aimerais depuis mon applet java ouvrir un fichier situé sur le disque dur du client. Fichier préalablement créé par l'applet elle même.
 
Il s'agit d'un fichier XML et je souhaiterais l'ouvrir dans un navigateur web. J'ai signé mon applet dans les règles de l'art. Pas de problèmes la dessus.
 
Quand je test en local, l'applet ouvre bien mon fichier. Quand je la met sur le serveur, la nouvelle fenêtre ne s'ouvre pas.
 

Code :
  1. public void init() {
  2.       String path = "file:/C:/";
  3.       URL destination = new URL(new URL(path), "Jrex.xml" );
  4.       this.getAppletContext().showDocument(destination, "_blank" );
  5.     }


 
Voila l'erreur dans ma console javascript :
 
Erreur de sécurité : le contenu situé à http://www.XXXXXX.html?page=http:/ [...] rss091.xml ne peut pas charger de données ou établir un lien vers file:///C:/Jrex.xml.
 
J'ai testé le path avec localhost, avec 127.0.0.1 etc... rien n'y fait. Sachant que ceci marche en local, ne s'agierait-il pas d'une sécurité des browsers ?
 
Avez vous une idée ?
 
Merci d'avance.

Message cité 2 fois
Message édité par bad11 le 29-06-2006 à 14:34:14
Reply

Marsh Posté le 29-06-2006 à 14:24:05   

Reply

Marsh Posté le 30-06-2006 à 12:23:48    

Ben l'idée est simple, une applet n'a absolument pas le droit d'accéder au disque local ! tu te rends compte des problèmes de sécurité que ça poserait ? ça voudrait dire que n'importe quelle page web pourrait alors se promener dans ton disque dur pour y chercher ou sauver ce qui l'intéresse... vachement dangereux.
 
Maintenant tu peux peut-être contourner cette limitation si l'applet ne doit tourner que chez toi (et aucun autre client), mais si c'est pour mettre sur un site web consultable par tout le monde oublie ça ne marchera jamais. Par contre une applet à le droit de lire et d'écrire des fichiers sur son serveur originel si jamais (enfin dans son codebase il me semble).

Reply

Marsh Posté le 30-06-2006 à 12:28:00    

bad11 a écrit :


Code :
  1. public void init() {
  2.       String path = "file:/C:/";
  3.     }




Et si je viens sur ton site avec mon linux, elle fait comment pour ouvrir ton fichier mon applet ?
 


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 30-06-2006 à 12:46:49    

Tu peux s'il est signé et que le visiteur accepte ... Parcontre c'est vrai que c'est pas cool pour nous linuxsiens :(


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 02-07-2006 à 11:08:01    

j'ai jamais rien compris avec ces applets signés et j'aimerais bien qu'on m'explique. Si je suis un saloupiot qui veut attaquer un client par une applet, j'ai qu'à la signer et elle est réputée comme fiable ? Pour que ce soit sérieux, il faudrait au moins que le client ait dans son keyring mon certificat, obtenu par une voie fiable il me semble. Si une bonne âme voulait bien m'expliquer le fonctionnement de ce mécanisme (par la procédure pour signer, ça je sais faire, mais comment être certain qu'un applet qu'un inconnu à signé ne sera pas désastreuse pour ma bécanne)...
 
Pour la remarque de zapan666, tu veux dire qu'il existe des gens qui n'ont ni windows ni IE ? Parce que sur le site de M$ ils affirment que c'est une légende urbaine   :whistle:

Reply

Marsh Posté le 02-07-2006 à 11:19:21    

bad11 a écrit :

Bonjour,
J'aimerais depuis mon applet java ouvrir un fichier situé sur le disque dur du client. Fichier préalablement créé par l'applet elle même.


La sécurité est très importante alors je pense que tu peux rêver d'avance
 

bad11 a écrit :


Il s'agit d'un fichier XML et je souhaiterais l'ouvrir dans un navigateur web. J'ai signé mon applet dans les règles de l'art. Pas de problèmes la dessus.
 
Quand je test en local, l'applet ouvre bien mon fichier. Quand je la met sur le serveur, la nouvelle fenêtre ne s'ouvre pas.


Pourquoi tu ne te baserais pas plutôt sur un système de cookies et d'infos stockées sur ton serveur. eT le fichier XML c'est ton serveur qui l'enverrai en fonction d'un id recupéré par les cookies. Bien si cookie désactivé ben DTC (au passage bien sur tu cryptes l'id dans le cookie pour qu'un petit malin ne s'amuse pas à modifier l'id dans le cookie
 
 

bad11 a écrit :


Code :
  1. public void init() {
  2.       String path = "file:/C:/";
  3.       URL destination = new URL(new URL(path), "Jrex.xml" );
  4.       this.getAppletContext().showDocument(destination, "_blank" );
  5.     }




Super \o/ et voila que tu veux coller un fichier xml dans mon C:\, j'ai pas envie qu'une applet qui sort de je ne sais ou me colle un fichier xml dans le c:\, j'ai bien avoir mon root de propre, c'est du noobism de bas étage ça. De plus ya que sous Windows que tu trouveras C:\. sous linux et macOS ben je te laisse chercher.
 
 

Reply

Marsh Posté le 10-07-2006 à 14:20:27    

Le contexte de conception est un peu spécial. Réservé à un intranet. Je ne vous demandais pas de me dire que c'est fait comme un noob (car c'est un projet adapté et nous n'avons pas pu faire autrement) mais comment contourner le problème ;=).
Mon applet est signée. Le fichier XML et créé, puis détruit à la fin de l'applet. C'est juste un fichier temporaire.
 
Donc si vous avez une idée pourquoi ma fenêtre ne s'ouvre pas sur un fichier local, une petite réponse serait la bienvenue :)

Message cité 1 fois
Message édité par bad11 le 10-07-2006 à 14:22:07
Reply

Marsh Posté le 10-07-2006 à 14:23:37    

Je ne vois pas bien comment utiliser des cookies dans ce contexte Gatsu..

Reply

Marsh Posté le 10-07-2006 à 14:59:35    

bad11 a écrit :

Le contexte de conception est un peu spécial. Réservé à un intranet. Je ne vous demandais pas de me dire que c'est fait comme un noob (car c'est un projet adapté et nous n'avons pas pu faire autrement) mais comment contourner le problème ;=).
Mon applet est signée. Le fichier XML et créé, puis détruit à la fin de l'applet. C'est juste un fichier temporaire.
 
Donc si vous avez une idée pourquoi ma fenêtre ne s'ouvre pas sur un fichier local, une petite réponse serait la bienvenue :)


et pourquoi l'ecrire sur le disque alors ? garde le en memoire, probleme resolu...


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 10-07-2006 à 15:04:02    

Parceque sur ce fichier XML, j'y applique des transformations XSLT avec une feuille de style CSS en prime, tu files tout ca à Mozilla, il transforme tout lui-même.
Donc il faut que je l'ouvre avec un browser pr avoir ces transfo de faite.

Reply

Marsh Posté le 10-07-2006 à 15:04:02   

Reply

Marsh Posté le 10-07-2006 à 15:09:35    

uhm, et c'est quoi l'interet du truc ?
(il est possible de faire une transformation XSLT en Java)
 
Uhm sinon ca doit *surrement* etre possible si ton applet est signe d'enregistre sur le disque mais je pense que c'est dans un repertoire defini, et pas n'importe ou :P (Je dis peut etre une connerie hein, a verifier tout ca)


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 10-07-2006 à 15:21:55    

le truc c'est que tout marche en local. Il sauvegarde bien sur le disque. M'ouvre le fichier avec mon browser par défaut, me fait mes transformation etc... mais des que je met ca sur un serveur, et bien si je lui demande d'ouvrir une page sur le web, il me lance bien le browser. Si c'est un fichier local, il ne fait rien et ne renvoie aucune erreur... bizarre!
 
L'interet est de pouvoir naviguer dans des Fils RSS pour des personnes non voyantes. Donc je récupere le fichier xml RSS depuis un site web de news. Je le transforme et on peut naviguer dedans grâce aux flèches du clavier + une synthèse vocale qui lit ce qui est écrit.
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed