64 votes

Lecture/écriture dans un fichier à l'aide de jQuery

Existe-t-il un moyen de faire en sorte que jQuery obtienne des informations depuis et vers un fichier ? Est-ce possible ? Comment ?

2 votes

Ne pouvez-vous pas écrire la réponse à un champ dans le HTML ?

0 votes

Ce n'est plus vrai. Mais l'accès que vous pouvez obtenir par le biais de javascript est limité à ce que l'utilisateur vous autorise.

1 votes

Le bac à sable empêche l'accès direct aux fichiers pour des raisons de sécurité. Vous pouvez utiliser l'API de fichier HTML5 pour permettre à l'utilisateur de sélectionner des fichiers dans une boîte de dialogue de fichier.

79voto

Paolo Bergantino Points 199336

Non, JavaScript n'a pas accès à l'écriture de fichiers car cela constituerait un risque de sécurité énorme, c'est le moins que l'on puisse dire. Si vous vouliez obtenir/stocker des informations côté serveur, cependant, vous pouvez certainement faire un appel Ajax vers un PHP/ASP/Python/etc. script qui peut alors obtenir/stocker les données dans le serveur. Si vous vouliez dire stocker les données sur la machine du client, c'est impossible avec JavaScript seul. Je soupçonne Flash/Java d'en être capable, mais je n'en suis pas sûr.

Si vous essayez seulement de stocker une petite quantité d'informations pendant une période peu fiable concernant un utilisateur spécifique, je pense que vous voulez API de stockage Web ou des cookies. Je ne suis pas sûr, d'après votre question, de ce que vous essayez d'accomplir, cependant.

9 votes

Les cookies fonctionneraient, bien sûr, mais comme la plupart des navigateurs modernes prennent en charge le stockage local HTML5, je choisirais cette voie. Voici un bon guide sur la façon dont cela fonctionne : diveintohtml5.org/storage.html

2 votes

@ChrisJaynes - ce lien est cassé, je pense que vous voulez celui-là : http://diveintohtml5.info/storage.html

0 votes

@marcgg Je pense que vous avez peut-être confondu Java (fabriqué par Sun) avec JavaScript.

37voto

ja. Points 428

Oui, c'est possible.

La technique est décrite ci-dessous

http://jquery.tiddlywiki.org/twFile.html

1 votes

C'est un plugin assez sympa, même s'il nécessite java pour certains navigateurs.

1 votes

Le lien est rompu à l'intérieur de la page .... '

16voto

Javier Points 33134

HTML5 et Google Gears ajoutent tous deux des capacités de stockage local, principalement par une API SQLite intégrée.

11voto

Eric Leschinski Points 14289

Utilisez la fonction javascript execCommand('SaveAs', false, filename); fonctionnalité

Edit : Ne fonctionne plus. Cette fonction Javascript fonctionnait sur tous les navigateurs, mais maintenant seulement sur IE, en raison de considérations de sécurité du navigateur. Elle présentait une boîte de dialogue "Enregistrer sous" à l'utilisateur qui exécutait cette fonction via son navigateur, l'utilisateur appuyait sur OK et le fichier était enregistré par javascript du côté du serveur.

Maintenant, ce code est une rare antiquité zéro jour de collection.

// content is the data (a string) you'll write to file.
// filename is a string filename to write to on server side.
// This function uses iFrame as a buffer, it fills it up with your content
// and prompts the user to save it out.
function save_content_to_file(content, filename){
    var dlg = false;
    with(document){
     ir=createElement('iframe');
     ir.id='ifr';
     ir.location='about.blank';
     ir.style.display='none';
     body.appendChild(ir);
      with(getElementById('ifr').contentWindow.document){
           open("text/plain", "replace");
           charset = "utf-8";
           write(content);
           close();
           document.charset = "utf-8";
           dlg = execCommand('SaveAs', false, filename);
       }
       body.removeChild(ir);
     }
    return dlg;
}

Appelez la fonction comme ceci :

msg =  "I am the president of tautology club.";
save_content_to_file(msg, "C:\\test");

1 votes

Votre solution ne fonctionne pas pour moi, ni sur Firefox 18.0.2 ni sur Chrome 24.

1 votes

Malheureusement, ce code ne fonctionne plus avec tous les navigateurs, il ne fonctionne plus qu'avec IE.

9voto

jonstjohn Points 23326

Vous devrez gérer l'accès aux fichiers par le biais d'un langage de programmation Web, tel que PHP ou ASP.net.

Pour mettre cela en place, vous devez :

  • Créez un script qui gère la lecture et l'écriture du fichier. Ce script doit être visible par le navigateur.

  • Envoyez des requêtes jQuery ajax à ce script qui écrivent des données ou lisent des données. Vous auriez besoin de passer toutes vos informations de lecture/écriture à travers les paramètres de la requête. Vous pouvez en apprendre davantage à ce sujet dans la documentation jQuery ajax.

Veillez à désinfecter toutes les données que vous stockez, car elles peuvent constituer un risque potentiel pour la sécurité. Cependant, il ne s'agit que d'un stockage de données standard sous forme de fichier plat, et ce n'est pas nécessairement inhabituel.

Comme Paolo l'a souligné, il n'y a aucun moyen de lire/écrire directement dans un fichier via jQuery ou tout autre type de javascript.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X