Comment utiliser le FileSystemObject pour lire le fichier en JavaScript
Je veux lire un fichier avec FileSystemObject. Mon code est le suivant:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Read json</title>
</head>
<body>
<script type="text/javascript">
function readFile(filename){
var fso = new ActiveXObject("Scripting.FileSystemObject");
var ForReading = 1;
var f1 = fso.OpenTextFile(filename, ForReading);
var text = f1.ReadAll();
f1.close();
return text;
}
myJSONText = "text.txt";
var myObject = readFile(myJSONText);//eval('(' + myJSONText + ')');
document.write(myObject.name);
</script>
</body>
</html>
Gah... Ok, tout d'abord que le code a l'air bien, aussi longtemps que vous êtes sous IE, donc je ne sais pas quel est le problème avec elle. MAIS ne faites pas cela! Vous êtes en train de préparer un système de fichiers local à partir d'un navigateur client, qui, presque chaque navigateur n'autorise pas. Et même si IE (les anciennes versions?) permettre comme ça, c'est encore un problème de sécurité. Si vous voulez lire un fichier, vous devez être demander à l'utilisateur de télécharger, puis la lecture sur le serveur (ou le lire sur le client en utilisant le nouveau fichier HTML5 Api)
OK, Merci pour votre aide. Maintenant, laissez-moi essayer. Encore un grand merci.
OK, Merci pour votre aide. Maintenant, laissez-moi essayer. Encore un grand merci.
OriginalL'auteur Bryant | 2012-10-17
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, permettez-moi de répéter certains des commentaires ci-dessus. Je n'ai jamais vu à l'aide de ActiveXObject côté client exalté comme une chose qui devrait être fait.
Maintenant, permettez-moi de dire que je suis en train d'apprendre à le faire moi-même. Voici quelques idées (et des liens utiles, voir le bas) sur cette question.
La mise en page générale, en fonction de "Much ADO about Fichiers Texte" sur MSDN est script de la clinique de la colonne, est:
une méthode de l'objet premier (comme l'obtention d'un fichier).
le fichier.
Comment voulez-vous commencer? Selon IE Dev Center (lié ici), utiliser un ActiveXObject en Javascript comme suit:
Vous avez que, lorsque vous déclarez
fso
dans votre code. Que dire de ce "servername" chose, n'est-ce pas le fichier accessible localement? Au lieu de "servername etc" que vous avez mis enScripting.FileSystemObject
. C'est en fait amende, si la clé de registre HKEY_CLASSES_ROOT sur le PC hôte prend en charge (voir ref ci-dessus).Une fois le ActiveXObject est déclarée, et si le navigateur le permet (c'est à dire uniquement), et si l'utilisateur s'engage à les avertissements pop-up ("Un contrôle ActiveX sur cette page peut être dangereux pour interagir avec d'autres parties de la page...", etc), puis l'objet vous permet d'utiliser l'une des méthodes associées à l'objet. C'est là que la puissance de Windows Scripting FileSystemObject entre en jeu.
Tout FileSystemObject (ofs), la méthode est désormais disponible à utiliser, qui, comme son nom l'indique, signifie que le fichier (et répertoire) de l'interaction sur la machine locale. Ne suffit pas de lire, comme votre question est axée sur, mais écrit et la suppression de. Une liste complète des méthodes et des propriétés est disponible sur MSDN ici. Après utilisation, fermer le fichier à l'aide de la
.close()
méthode.Donc, c'est dangereux pour des raisons évidentes. Mais ce n'était pas évident pour moi, au début, que ces interactions avec le système de fichiers peut se produire invisible. Il ya une bonne chance que tout ce que vous faites, à partir de la lecture d'un fichier à la suppression d'un répertoire de l'arborescence, pas de mises en garde ou les invites de commande seront à la hauteur de vous permettre de savoir ce qui se passe à cause de votre peu de lignes de code.
Permettez-moi de terminer en commentant les derniers bits de code ci-dessus. En utilisant JSON en conjonction avec les données extraites de la FileSystemObject fournit un excellent moyen pour permettre à JavaScript interaction (JSON .analyser et .stringify viennent immédiatement à l'esprit). Avec cela, les données peuvent être stockées localement, peut-être comme une alternative pour le stockage local HTML5 (réf ce fil, qui va plus en profondeur avec ce concept, et de l'autre, de SORTE question que j'ai posée à propos de ce ici).
Voici quelques liens pour en savoir plus:
IE Dev Center, des Objets JavaScript, ActiveXObject
MSDN JScript Windows Scripting (y compris FileSystemObject méthodes, etc.)
MSDN Script Clinique (anciens articles, de nombreux liens cassés, mais stil beaucoup de bonnes infos sur ce genre de choses)
OriginalL'auteur Aaron Thomas