web-dev-qa-db-fra.com

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

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

61
menardmam

Non, JavaScript n’a pas accès à l’écriture de fichiers, ce qui est peu risqué pour la sécurité. Si vous souhaitez obtenir/stocker des informations côté serveur, vous pouvez certainement effectuer un appel Ajax vers un fichier PHP/ASP/Python/etc. script qui peut ensuite récupérer/stocker les données sur le serveur. Si vous vouliez stocker des données sur la machine cliente, cela est impossible avec JavaScript uniquement. Je suspecte que Flash/Java puisse le faire, mais je ne 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. D'après votre question, je ne suis pas sûr de ce que vous essayez d'accomplir.

74
Paolo Bergantino

Oui c'est possible.

La technique est décrite ci-dessous

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

37
ja.

hTML5 et Google Gears ajoutent des capacités de stockage local, principalement via une API SQLite intégrée.

16
Javier

Utiliser la fonctionnalité execCommand('SaveAs', false, filename); de javascript

Edit: ne fonctionne plus. Cette fonction Javascript fonctionnait sur tous les navigateurs, mais maintenant uniquement sur IE, pour des raisons de sécurité du navigateur. Elle présentait un dialogue "Enregistrer sous" à l'utilisateur qui exécute cette fonction via son navigateur. , l’utilisateur appuie sur OK et le fichier est enregistré par javascript côté serveur.

Maintenant, ce code est un objet de collection zéro jour antique rare.

// 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;
}

Invoque la fonction comme ceci:

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

Vous devrez gérer votre accès aux fichiers via un langage de programmation Web, tel que PHP ou ASP.net.

Pour cela, vous devez:

  • Créez un script qui gère la lecture et l’écriture du fichier. Cela devrait être visible pour le navigateur.

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

Assurez-vous de nettoyer toutes les données que vous stockez, car cela pourrait potentiellement constituer un risque pour la sécurité. Cependant, il ne s'agit en réalité que d'un stockage de données standard sur fichier plat, et ce n'est pas nécessairement si inhabituel.

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

9
jonstjohn

Les cookies sont votre meilleur pari. Recherchez le plugin jquery cookie.

Les cookies sont conçus pour ce type de situation - vous souhaitez conserver certaines informations sur ce client côté client. Sachez simplement que les cookies sont échangés à chaque demande Web, vous ne pouvez donc pas y stocker de grandes quantités de données. Mais une simple réponse à une question devrait suffire.

5
Clyde

Si vous souhaitez effectuer cette opération sans effectuer de traitement côté serveur au sein de la page, il peut être judicieux de décomposer la valeur de texte dans un champ masqué (à l'aide de PHP). Vous pouvez ensuite utiliser jQuery pour traiter la valeur du champ masqué.

C'est comme tu veux :)

1
Josh Stodola