MANIPULATION DU SYSTÈME DE FICHIER LOCAL EN JAVASCRIPT (IE ET MOZILLA)

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 13 mai 2008 à 17:21
lp0683 Messages postés 20 Date d'inscription jeudi 30 novembre 2000 Statut Membre Dernière intervention 21 mars 2010 - 21 mars 2010 à 21:02
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/46655-manipulation-du-systeme-de-fichier-local-en-javascript-ie-et-mozilla

lp0683 Messages postés 20 Date d'inscription jeudi 30 novembre 2000 Statut Membre Dernière intervention 21 mars 2010
21 mars 2010 à 21:02
déjà super pour cette source :)

Quelqu'un aurez trouvé pour enregistrer un fichier avec les problème de droits ?
Amicalement :)
idef Messages postés 1 Date d'inscription jeudi 7 octobre 2004 Statut Membre Dernière intervention 29 mars 2009
29 mars 2009 à 06:19
Bon code, très utile.
Par contre il faut modifier la fonction getFilesMozilla()
Il faut utiliser : result.push(entry.leafName);
Au lieu de : result.push(entry.path);
Sinon quand on appel getFiles() on n'a pas le même type de retour sous IE que sous FF.
Avec cette modification on recevera toujours une liste de fichiers et non pas un liste de chemins sous FF.
bartsword1234 Messages postés 2 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 13 octobre 2008
13 oct. 2008 à 09:52
Bonjour à tous,
moi mon gros problème, c'est qu'une bonne partie des fonctions n'a pas de commentaires en en-têtes, ce qui n'aide pas à la compréhension...
Ce que je cherche à faire, c'est une page ou le client peut uploader une image sur le serveur depuis un input file, et ce que j'aimerais c'est que quand il à fini de choisir l'image à uploader (parcourir, valider), celle-ci s'affiche en dessous du input file. Je sais que c'est actuellement possible avec IE mais pas avec FF à cause qu'il récupère file:///exemple.jpg et à ce que j'ai pu comprendre du script qu'on à ici c'est qu'il arrangeait ce problème avec FF grâce à XPCOM... Mais un exemple concret de l'utilisation de ces fonctions (avec un input file par exemple) serait le bienvenue :D
p4rb4ll Messages postés 10 Date d'inscription dimanche 23 octobre 2005 Statut Membre Dernière intervention 8 novembre 2008
22 août 2008 à 09:29
Bonjour,

je n'arrive pas a accéder a l'exemple et je dois avouer que sans exemple je suis un peu perdu sur se script, je métrise pas JS a se point ^^.

sa serait possible de poster un exemple directement en commentaire pour que je puisse l'adapter??

Merci
PazZ
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
19 mai 2008 à 06:35
j'ai pas bien compris ce que veus dire ton blablabla !

a++
@karamel Messages postés 1855 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 18 avril 2024 153
18 mai 2008 à 20:56
et blablabla et blablabla
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
18 mai 2008 à 11:30
Très bon exemple de manipulation de fichier, ça fait longtemps qu'il n'y avait pas eu de source comme celle la !
Je ne comprend pas pourquoi tout le monde critique tout ! Chaqun sont avis mais il n'y a pas besoin de le partager !
Bref c'est peut être l'un des pire défaud de certains êtres humains, enfin on est tous différent, vous imaginez un monde ou tout le monde est pareil, ce serai ennuyeux a mourir (toujours le même avis, les même cetre d'intérêt, etc...), oula, je m'égare un peut moi !
Finalement pour en revenir a ta source GhostWan, merci de l'avoir posté, comme l'a dit bultez que je salue, ça ouvre de réelle possibilités !

a++
cs_ghostwan Messages postés 20 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 16 mai 2008
16 mai 2008 à 10:26
@Arto_8000 merci pour tes astuces pour les scripts, mais j'ai essayé de valider la signature et j'ai quand même l'erreur, je comprends pas t'as une idée?

Sinon pour mes exemples pour Firefox, je reconnais mon erreur, en effet Firefox 3 gère mieux les CSS que la version 2. Le vrais problème c'est que beaucoup de développeur (moi compris -_-, bouhhh honte sur moi) sont partis de la manière dont Firefox 2 interprétait les CSS, résultat je tourne là avec Firefox 3 et plein de sites ont les CSS qui partent en vrille. Y 'a pas de backward compatibilité avec certain site basé sur un autre modèle.

Vivement un web où tout les navigateurs suivront scrupuleusement les standards... je sais je rêve, alors faisons avec!
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
15 mai 2008 à 22:02
En passant le commentaire que j'ai mis c'est pour expliquer pourquoi le script ne marche pas et comment le faire fonctionner sans qu'il sorte une erreur. Pour utiliser ces fonctions, il faut faire signer ces scripts et après on peut demander la permission de l'utilisateur, sinon ça sort un erreur sans même offrir la possibilité à l'utilisateur d'accepter ou non le script.

En passant Ghostwan tes exemples sont mauvais en ce qui concerne les défauts de Firefox. La principale différence entre la version 2 et 3 au niveau de l'affichage est un meilleur support du CSS 2, ce qui n'est pas en sois un défaut ... Mais j'ai compris le principe, à chaque navigateur ces défauts et ces qualités.
cs_ghostwan Messages postés 20 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 16 mai 2008
15 mai 2008 à 16:01
cs_ghostwan Messages postés 20 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 16 mai 2008
15 mai 2008 à 15:53
Loool merci bultez (au faite moi c'est ghostwan, mais no soucie!). J'ai poster cette source, parce que je trouve que ce genre d'outils pourraient servir à d'autre développeurs, je les utilisent bien pour mes projets. D'autre part je suis d'accord avec toi quand tu parle des trolls FF/IE, Windows/Linux... useless! Je ne veut créé aucune polémique, je travail pour une très grosse boite française et 90% des utilisateurs bosse sous windows avec IE, ils n'ont pas le choix, c'est la DSI qui choisit. Il faut faire avec, s'adapter coder multiplateformes et multinavigateurs car c'est programmes doivent pouvoir tourner partout. Bref IE à ses défauts, tout comme firefox (une horreur en matière de permissivité des erreurs dans le code par exemple, je vous parle même pas du rendus qui diffère entre la version 2 et 3 du navigateur) et faut faire avec!
lakichemole Messages postés 253 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 18 mai 2009
15 mai 2008 à 09:37
Surtout que IE est beaucoup utilisé et que IE7 a fait un grand bon vers le coté clair de la force :)
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
15 mai 2008 à 08:54
à Arto_8000 : mais on s'en contrefiche !

1° si tu connaissais un ch'tit peu mieux IE,
tu saurais que tout ce que tu dis peut
aussi se paramétrer avec ce navigateur !
( scripts signés ou pas , activeX acceptés ou pas,
paramétrages différents en local, intranet,
internet, sites de confiance ... )
mais quel rapport avec cette source ?
quel est ton intérêt à vouloir casser ?

2° l'intérêt de cette source c'est de nous
montrer qu'on peut manipuler des fichiers,
avec IE comme avec FF ( aujourd'hui ! )
c'est ça l'important, et tes élucubrations
n'apportent rien à celle-ci, les (soit-disant) défauts
des navigateurs n'enlêve rien au travail de GhostMan.

3° la secte des dénigreurs systématique d'IE est
particulièrement pénible, en plus d'être ignorante
elle diffuse des contre-vérités.

4° tu viens gâcher une source très intéressante.

j'ai probablement tort de réagir, navré Ghostman,
mais ils me fatiguent les anti-IE

IE qui n'est pas mon navigateur de base !
je réagirais de la même manière si une
secte anti-FF existait

et j'en arrête ici, laisser donc les gens libres
de choisir leur navigateur ! attaquer les
autres produits est la pire des manières de
défendre celui que vous préférez, c'est même
contreproductif, que ce soit justifié ou pas.

@+
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
15 mai 2008 à 03:45
Allez lire le lien que j'ai mis un peu plus haut ... ça explique à peu près tout.

"Once you have written the script, you sign it using Netscape's SignTool. SignTool associates a digital signature with HTML and JS files. That digital signature is owned by a particular principal (a real-world entity such as Netscape or John Smith). The digital signature and the files it signs are both placed in a Java Archive (JAR) file.

The associated principal allows the user to confirm the identity of the entity which signed the script. It also allows the user to ensure that the script hasn't been tampered with since it was signed. The user then can decide whether to grant privileges based on the validated identity of the certificate owner and integrity of the script."

Donc, il faut faire signer son script pour pouvoir offrir la possibilité d'utiliser le script et encore là il faut que l'utilisateur accepte. Ce qui largement mieux comme protection que la simple fenêtre qui ne veut pas dire grand chose de Internet Explorer.
cs_dominion Messages postés 230 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 15 mai 2008
15 mai 2008 à 01:34
Je me disais aussi que Mozilla aurait jamais permit ça....

Pour ceux que ça intéresse, le dernier GNU Linux Magazine France (n°105) propose un article qui permet de sauver des fichiers, via l'utilisation d'un hack par serveur distant. En ajax, donc, et totalement compatible avec tous les navigateurs qui savent télécharger des fichiers. C'est très bien pensé.

Sinon, l'idéal serait que Mozilla propose de débloquer certains site seulement pour la gestion des fichiers locaux, comme c'est déjà le cas pour les popus, par exemple...
Avis aux éventuels développeurs de Mozilla ;-)
lakichemole Messages postés 253 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 18 mai 2009
14 mai 2008 à 16:09
oki merci pour ces infos :)
cs_ghostwan Messages postés 20 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 16 mai 2008
14 mai 2008 à 15:29
Essaye réciproquement pour loadFromFileMozilla et saveToFileMozilla ces deux fonctions: netscape.security.PrivilegeManager.enablePrivilege("UniversalPreferencesRead")
et
netscape.security.PrivilegeManager.enablePrivilege("UniversalPreferencesWrite")

à la place de netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
sachant que sur le site http://www.mozilla.org/projects/security/components/jssec.html, ils disent que :
When the script calls this function, if the signature is valid or codebase principal are enabled, expanded privileges can be granted. If a user has not accessed this principal before, a dialog asks the user if he wants to accept the signed code. Unlike Communicator 4.x, Mozilla does not display a detailed Java grant dialog, rather a simple dialog asking if the principal can be trusted. The user can accept or deny and allow their choice to be remembered by the browser.

"Quand le script appelle cette fonction, et si la signature est valide ou que "codebase principal" est activé, l'expansion des privilèges est alors garantit."
Et en gros mozilla est censé vous demander si vous voulez faire confiance au script suivant.

Je creuserait la question plus tard pour ma part, je taff totalement en local donc pour l'instant le problème ne se pose pas. Mais je pense que Mozilla n'a pas mit en place ce mécanisme que pour la consultation en local.
cs_ghostwan Messages postés 20 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 16 mai 2008
14 mai 2008 à 15:10
Y'a jamais eu de magie et c'est pour ça que j'ai 2 fonctions copyFileMozilla et copyFileMSIE. On est obligé de passé par un activeX sous ie mais le soucis c'est de trouver un équivalent sous mozilla.
Je suis passé par une de leur technique décrite sur leur site, il me semble aussi (faut que je remette la main sur l'article) qu'ils donnaient la technique pour paramétré mozilla, pour que ça marche a distance. Cette manip oblige l'internaute à être conscient des risques de ce type de fonctions et ajoute une notion de sécurité non négligeable, ce que Arto_8000 avait illustré par son propos:
>> Les fonctions qui sont utilisés sont beaucoup mieux contrôler sur Mozilla/Firefox que sur Internet Explorer.
lakichemole Messages postés 253 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 18 mai 2009
14 mai 2008 à 14:59
Re, bon j'ai fait une petite page de test rapide (à l'arrache) qui utilise loadfile et savefile
https://serveur.kicheland.com/Tutorial/test.html
(c un serv perso pas de blague :))
Mes conclusions rapide:
- J'ai cru à la magie mais il y a bien un activX derière tous ça!
- Sous IE6 à distance ça marche niquel
- Sous firefox (2.x) blocage (pas de droit de lecture) j'ai pas poussé plus loin.
cs_ghostwan Messages postés 20 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 16 mai 2008
14 mai 2008 à 14:01
Exemples javascript pour la copie de fichier:

/*getPath() renvoie le chemin absolue du répertoire où se trouve la page courante*/
var src = getPath()+"\\..\\img\\toto.jpg";
var dest = getPath()+"\\..\\img\\toto_copie.jpg";

/*test si le fichier n'est pas déja présent*/
var imageFile = loadFromFile( dest );
/*S'il n'existe pas on le créé dans le repertoire*/
if ( imageFile.length == 0 ) copyFile(src ,dest );

Exemples javascript pour le chargement et la sauvegarde d'un fichier texte:

var vlFilename = getPath()+"\\..\\txt\\toto.txt";

/*Charge le fichier dans une variable*/
var fichierText = loadFromFile( vlFilename );

/*Test si le chargement c'est bien effectué*/
if ( fichierText.length == 0 ) {
var str = "Erreur, problème d'accès au fichier : \n"
+ vlFilename + "\n Environnement invalide.";
alert(str);
}
else {
/*modifie la valeur du fichier*/
fichierText = "autre chose";
try {
/*sauvegarde le contenus*/
saveToFile( fichierText , vlFilename );
} catch (e) {
var str = "Erreur, enregistrement fichier : \n" + vlFilename;
alert( str);
}
}
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
14 mai 2008 à 13:54
ça devrait intéresser de nombreux internautes,

sans exemples d'utilisation ça risquerait
d'être difficile pour les "débutants",
ce que nous sommes tous.

les cas "plus complexes" comme ceux que tu cites,
ceux qui s'y attaquent devraient y parvenir,
maintenant qu'on a les billes.
cs_ghostwan Messages postés 20 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 16 mai 2008
14 mai 2008 à 13:41
Merci, je doit dire que sans ça, j'aurais bien été embêter pour faire mon projet.
Je vais vous faire quelques exemples, mais je ne vous garantit pas qu'il marcheront en mode serveur, je m'explique;
Je bosse totalement en local donc je n'ai pas tester les fonctions sur un serveur distant, par ailleurs vous remarquerez
# try {
# netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
# } catch (e) {
# alert("Permission to save file was denied.");
# }
que la modification des privilèges pour l'écriture sur le système de fichier locale, n'est pas garantit.
lakichemole Messages postés 253 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 18 mai 2009
14 mai 2008 à 09:34
Oui je voudrais bien un petit exemple :)
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
14 mai 2008 à 08:37
ce n'est pas le lieu pour une polémique
stupide, ridicule et mal venue.

merci encore et bravo à Ghostwan de nous avoir
donné cette manipulation compatible IE et FF.
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
13 mai 2008 à 22:49
Le regret que j'ai quand je lis ton commentaires c'est que tu sautes aux conclusions un peu trop vite et que tu ne prends même pas la peine de vérifier ce que tu dis. Les fonctions qui sont utilisés sont beaucoup mieux contrôler sur Mozilla/Firefox que sur Internet Explorer.

Aller tu liras ceci (anglais):
http://www.mozilla.org/projects/security/components/jssec.html
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
13 mai 2008 à 17:21
depuis le temps qu'on me disait : impossible
de gérer les fichiers avec FF ! ce serait
une énorme faille de sécurité !

enfin !!! javascript va pouvoir être utilisé
avec FF pour des applications au vrai sens
du terme.

bravo.

pas tout testé ni regardé de près, loin de là,
mais ça ouvre de réelles perspectives.

un regret ? l'absence d'exemples d'utilisation...

des trucs tout bête, comme ça :

émetteur :
récepteur :

cordialement.
Rejoignez-nous