chargement d'un fichier texte ? [javascript] - Programmation
Marsh Posté le 07-05-2001 à 13:26:19
oui en utilisant un fichier .js
Marsh Posté le 07-05-2001 à 13:31:24
je crois pas qu'on puisse vraiement le faire, mais tu peux magouiller avec un fichier .js externe. Ca depend de ce que tu veux faire !
Marsh Posté le 07-05-2001 à 15:17:28
le but serait simplement d'extraire la température d'un relevé METAR (météo aéronautique). La température est composée de deux caractères se trouvant en position 34 et 35 de la 2ème ligne du fichier texte (avant le caractère /)
par exemple pour Clermont-Ferrand :
ftp://weather.noaa.gov/data/obser [...] s/LFLC.TXT
ces bulletins renouvellés toutes les heures proviennent des principaux aérodromes à travers le monde, ils sont gratuits et accessibles à tous, mon seul problème c'est de transférer ces deux lignes de textes dans des strings afin de pouvoir en extraire les données qui m'intéressent !
je sais que le javascript est bridé en écriture ce que je comprend tout à fait (sécurité) mais n'y a-t-il pas moyen de LIRE un simple fichier au format .txt ou .htm qui est de toute façon ouvert à tous ???
Marsh Posté le 07-05-2001 à 16:01:14
ben je ne pense pas mais je n'en suis pas sur.
Mais est ce que tu peux modifier le fichier lflc.txt pour qu'il s'appelle lflc.js par exemple et dedans tu ecrirais :
var temperature="DU";
par exemple ?
si tu peux faire ca, il ne te reste plus qu'a inclure le fichier lflc.js dans un scrip javascript.
autre solution :
Tu crees une frame toute petite et sans scrollbar en bas de ta page, ou en haut de maniere a ce que l'utilisateur ne la voit pas (1pixels de huat par exemple). Dedans tu mets le fichier lflc.txt : src="lflc.txt".
Ensuite tu viens recuperer le contenu de la frame par un javascript qui se trouve dans la page principale.
=> ....body.innerHTML doit contenir le code html de la page je crois ou il faut utiliser une autre methode mais il est possible de recuperer le contenu du fichier en magouillant de cette maniere.
Marsh Posté le 07-05-2001 à 18:56:20
darkoli a écrit a écrit : ben je ne pense pas mais je Mais est ce que tu peux modifier le fichier lflc.txt pour qu'il s'appelle lflc.js par exemple |
merci pour le coup de main, malheureusement non je n'ai aucun contrôle sur ce site (qui n'est pas le mien) j'ai juste le droit d'aller y chercher le fichier texte c'est tout !
ok pour l'idée de charger le fichier texte dans une 2e frame, j'ai donc ma frame principale (disons que j'appelle frame_principale) et une petite frame qui contient le fichier texte (baptisée petite_frame)
la commande
texte=document.body.innerHTML;
fonctionne très bien, elle recopie le contenu de frame_principale dans la variable texte
le problème est que le contenu qui m'intéresse est celui de petite_frame et je ne sais pas comment y accéder (systaxe ?)
j'ai essayé :
texte=petite_frame.document.body.innerHTML;
texte=window.petite_frame.document.body.innerHTML;
mais rien à faire javascript n'en veux pas !
donc merci pour l'idée, elle est très bonne, mais reste un dernier point : comment faire pour accéder à petite_frame ??
P.S. j'ai aussi essayé avec window.open() en ouvrant le fichier texte dans une 2eme fenetre que j'ai appelé fenetre2 puis essayé d'y accéder genre
texte=window.fenetre2.document.body.innerHTML;
mais ça marche pas non plus !
là je coince grave...
Marsh Posté le 07-05-2001 à 19:31:38
tu ne peux pas en javascript... et tu ne peux pas non plus avec le systeme de frames car par securite, il est interdit de communiquer entre frames qui ne sont pas sur le meme domaine.
par contre tu peux recuperer le fichier via un applet java puis , dans ton javascript, appeller une fonction de ton applet qui va te renvoyer la chaine que tu veux et tu pourras donc la manipuler dans ton javascript.
vu que je ne suis surement pas tres clair, ca donnerait qqchose comme ca en pseudo-pseudo-code :
Citation :
|
finalement, je ne suis pas sur que ca soit bcp plus clair
tu peux aussi, si ton hebergeur le permet, recuperer la page via un script PHP, la parser et afficher les resultats que tu veux.
ou encore, toujours via PHP, la parser, generer un fichier lflc.js sur ton serveur qui contiendrait le texte dans une variable (var temperature = "DU" du post de darkoli) , l'inclure a ta page HTML et faire les traitements que tu veux apres...
[edit]--Message édité par JWhy--[/edit]
Marsh Posté le 07-05-2001 à 20:41:13
Il me semble qu'un applet java ne peut se connecter qu'a son propre serveur non ?
En php en tout cas c'est sur ça marchera.
Marsh Posté le 07-05-2001 à 21:02:14
ReplyMarsh Posté le 07-05-2001 à 23:37:49
Par contre je crois qu'avec une applet signée on peut, mais je sais pas du tout comment ça marche cette histoire de signature..
Tu saurais pas comment ça marche toi JWhy ?
Marsh Posté le 09-05-2001 à 01:17:04
re salut,
je vient d'avoir confirmation qu'avec java on peut aller chercher un fichier texte sur le net sans probleme, voici la source d'un applet qui fait cette action justement (ci-dessous) mais pas de bol à la compilation j'ai un warning : "HelloFromNet.java uses or overrides a deprecated API."
!?!? qqun a-t-il une idée de ce que ça raconte ???
et à l'exécution j'obtient systématiquement le message "probleme..."
un dernier coup de main serait sympa, j'ai installé java depuis 24 heures et j'y connais encore rien ! c'est sûrement pas grand chose qui coince !!
et aussi un autre truc bizarre : chaque fois qu'une ligne du genre
System.out.println(txt)
est utilisée (pour afficher une ligne de texte) y a rien qui s'affiche nulle part ! où donc est affiché le texte ???
au fait je compile depuis une fenetre DOS (javac nomfichier.java) puis lance le nomfichier.class depuis un fichier html depuis l'explorer
est-ce que c la méthode que vous utilisez ?? ça me parait vachement lourd !!! existe-t-il des environnement complets genre Delphi pour Java ?
...
voici donc la source java qui ne fonctionne pas, puis le contenu du fichier html que j'utilise pour lancer l'applet.
j'ai trouvé cet exemple sur http://www.eteks.com/
dans le chapitre bibliotheque/gestion des fichiers/connexions (URLconnection)
je le recopie ci-dessous texto
------------------------------------------------
Voici un exemple simple d'applet qui lit le texte contenu dans le fichier accessible à l'URL http://www.eteks.com/classes/hello.txt pour l'afficher à l'écran :
et le programme Java correspondant (à copier dans un fichier dénommé HelloFromNet.java et invoqué à partir d'un fichier HTML) :
import java.applet.Applet;
import java.awt.Graphics;
import java.net.*;
import java.io.*;
public class HelloFromNet extends Applet
{
String texteLu;
// Méthode appelée par le système à l'initialisation de l'applet
public void init ()
{
try
{
// Création de l'URL http://www.eteks.com/classes/hello.txt
URL urlFichierHello = new URL ("http",
"www.eteks.com",
"/classes/hello.txt" );
// Ouverture d'une connexion et récupération d'un flux d'entrée
URLConnection connexion = urlFichierHello.openConnection ();
InputStream fluxFichier = connexion.getInputStream ();
// Lecture du contenu du flux d'entrée
byte contenuFichier [ ] = new byte [connexion.getContentLength ()];
int octetsLus = fluxFichier.read (contenuFichier);
texteLu = new String (contenuFichier, 0, 0, octetsLus);
// Fermeture de la connexion
fluxFichier.close ();
}
catch (Exception e)
{
texteLu = "Probleme...";
}
}
// Méthode appelée par le système pour mettre à jour le dessin de l'applet
public void paint (Graphics gc)
{
if (texteLu != null)
// Affichage du texte lu
gc.drawString(texteLu, 10, 20);
}
}
-----------------------------------------------------------------
et voilà ce que j'ai mis dans le fichier html ( c p-e là le pb ?)
---
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>
Test HelloFromNet
</TITLE>
</HEAD>
<BODY>
<APPLET
CODEBASE = "."
CODE = "HelloFromNet.class"
NAME = "Applet HelloFromNet"
WIDTH = 450
HEIGHT = 300
HSPACE = 0
VSPACE = 0
ALIGN = middle
>
</APPLET>
</BODY>
</HTML>
Marsh Posté le 09-05-2001 à 11:29:50
Si tu as le message probleme... c'est justement parce que tu ne peux pas te connecter a un autre serveur que celui d'ou elle est downloader (ton site quoi) avec une applet (non-signée).
Si tu veux tester essai de remplacer l'url par une url d'un fichier texte de ton serveur.
Pour voir une applet tu peux faire appletviewer nom_du_ficher_html avec une console DOS mais c'est la machine virtuelle de Sun qui est utiliser et celle d'IE est beaucoup moins bien. donc il faut quand même tester sous IE.
Marsh Posté le 09-05-2001 à 11:45:58
Dans le cas ou tu utiliserais exclusivement IE>5 tu peux te servir de l'objet HTTPRequest et ainsi charger ton fichier text dans un objet.
Marsh Posté le 09-05-2001 à 16:07:13
Roswell_ a écrit a écrit : Si tu as le message probleme... c'est justement parce que tu ne peux pas te connecter a un autre serveur que celui d'ou elle est downloader (ton site quoi) avec une applet (non-signée). Si tu veux tester essai de remplacer l'url par une url d'un fichier texte de ton serveur. |
effectivement, ça fonctionne tant qu'on reste sur le serveur d'où est lancé l'applet ! mais alors quel intérêt de pouvoir construire une URL complète en java si on est limité aux répertoires de l'URL de départ ??? pas très cohérent ça !
Nabab a écrit a écrit : Dans le cas ou tu utiliserais exclusivement IE>5 tu peux te servir de l'objet HTTPRequest et ainsi charger ton fichier text dans un objet. |
pour moi c'est ok, mais bon je ne peux pas imposer ie>5 aux visiteurs
-------------------
de toute façon je reste persuadé qu'il existe une methode pour charger un fichier texte en mémoire depuis un autre site
Essayez le programme Notepad.java qui est donné en exemple :
demo\jfc\notepad
java -jar Notepad.jar
et comme nom de fichier à charger mettez :
http://www.eteks.com/classes/hello.txt
et bien vous verrez que ça fonctionne nickel, le fichier texte est chargé sans broncher depuis le site !
le problème c'est que la source du notepad est plutôt longue et pointue, et pour quelqu'un qui découvre ce langage c'est pratiquement mission impossible pour s'y retrouver !
A noter que les deux sources du Notepad
notepad\src\Notepad.java
et
notepad\src\ElementTreePanel.java
n'utilisent pas une seule fois HTTPRequest !
...Bon alors, retour au point de départ, puisque maintenant on sais que c'est POSSIBLE (cf notepad.java) de charger un fichier texte depuis un autre site, qui donc sera capable de me faire un petit applet réalisant cette action ? (un voyage d'une semaine pour deux personnes à Mexico à gagner !!(*) )
(*)je plaisante, hein ! ;-)
Marsh Posté le 09-05-2001 à 18:23:33
C'est parce que les applet sont tres sécurisées et donc tres restricives. Les applications par contres elles tirent partie de toutes les possibilités qu'offre l'API java.
Mais bon ,imagine un site qui fasse charger une applet qui envoie continuellement des données a un serveur pour le mettre HS, le site en question ne pourra difficilement trouvé d'ou vient l'attaque puisque c'est chaque client qui enverrait ces données depuis leur ordi.
Par contre en php tout ce fait depuis ton serveur donc on peut te retrouver, c'est une raison pour laquelle les applet sont tellement restrictive.
Si c'est pas trop compliquer je pourrais te faire le script php.
[edit]--Message édité par Roswell_--[/edit]
Marsh Posté le 09-05-2001 à 19:26:13
ok pour le php, je suis ouvert à toute solution !
en plus j'ai trouvé exactement ce que je cherche en php :
extrait :
"
..récupérer une chaîne METAR consiste à appeler un serveur par l'URL suivante :
$file = @file("http://weather.noaa.gov/pub/data/" . "observations/metar/stations/$station.TXT" );
Exemple de METAR pour Paris, l'identificateur est 'LFPG'
"
en fait tout ce que j'ai besoin ce serait d'une routine qui récupère ce fameux fichier texte et le sauvegarde sur mon site. Après je peux le reprendre avec java facilement !
le problème c'est la syntaxe de ce langage php et son fonctionnement, plutôt étrange ! j'ai essayé le programme traditionnel, le fameux "hello world", et bien j'ai même pas été fichu d'arriver à le lancer !
je l'ai recopié ci-dessous, y a-t-il une erreur quelque part ? j'ai mis ça dans un fichier hello.php3 que j'ai recopié sur mon site, puis je l'ai lancé en l'appelant par son nom tout simplement ! c'est bien comme ça qu'il faut opérer ?
voici le code recopié texto, résultat = belle page blanche... (mon premier flop avec un programme 'hello world' )
<html>
<head>
<title>
<?
$pagetitle= "Mon premier script PHP3";
echo $pagetitle;
?>
</title>
</head>
<body>
<h1><? echo $pagetitle ?></h1>
<?
echo " <b> Hello, World ! </b>";
?>
</html>
Marsh Posté le 09-05-2001 à 20:38:53
ton hebergeur doit supporter PHP car le fichier est traite par le serveur qui genere ensuite du beau HTML lisible par ton browser.
Marsh Posté le 09-05-2001 à 21:48:49
ouais, ben apparemment d'apres les exemples que j'ai essayé il supporte ni PHP ni ASP !
je l'ai dans l'os comme on dit !
tant pis, merci à tous pour les infos et conseils
A+
Marsh Posté le 09-05-2001 à 22:20:19
si tu veux je peux héberger un php chez moi qui genere un javascript que tu inclus dans ton html dit moi exactement ce que tu veux extraire et quelles variable tu veux générer en javascript.
Marsh Posté le 10-05-2001 à 09:40:03
Je sais pas si ça a été déjà proposé, mais, tu pourais pas afficher ton fichier dans une page html, via la méthode document, lire son contenu?
Sinon, y'a VisualJ++ de MS pour faire du java et Delphi pro permet de gérer le html et le ftp....Mais là, j'y connais rien ( je fais pas de réseau)...
Marsh Posté le 10-05-2001 à 22:51:30
Roswell_ a écrit a écrit : si tu veux je peux héberger un php chez moi qui genere un javascript que tu inclus dans ton html dit moi exactement ce que tu veux extraire et quelles variable tu veux générer en javascript. |
bah le but final ça aurait été d'avoir un script/fonction java/php (ou autre) du genre 'ChargerTexte', ce qui aurait donné une syntaxe un peu comme ça :
<script = "javascripr">
// chargement du fichier texte correspondant au METAR de Paris
String Texte = ChargerTexte("ftp://weather.noaa.gov/data/observations/metar/stations/LFPG.TXT" );
// écrire bienvenue + température actuelle
document.write("Salut les amis, il fait en ce moment "+Texte[32]+Texte[33]+"° dans notre belle ville de Paris" );
</script>
mais bon si je dois passer par un autre serveur pour obtenir la fonction 'ChargerTexte' ça ne m'intéresse pas, mais merci quand même c'était sympa de le proposer !
rufo a écrit a écrit : Je sais pas si ça a été déjà proposé, mais, tu pourais pas afficher ton fichier dans une page html, via la méthode document, lire son contenu? |
non cette idée a déjà été évoquée un peu plus haut, mais il est impossible de transférer le contenu d'une frame/fenêtre vers une variable si son contenu provient d'un site different que celui où a été lancée la fenêtre (je sais pas si je suis très clair là ? ).
[edit]--Message édité par John74--[/edit]
Marsh Posté le 07-05-2001 à 13:08:02
salut, comment peut-on, en javascript, charger un fichier texte vers une variable de type string ou autre ?
merci