Maison >interface Web >js tutoriel >Pourquoi mon code JavaScript ne peut-il pas lire les fichiers texte locaux et comment puis-je y remédier ?

Pourquoi mon code JavaScript ne peut-il pas lire les fichiers texte locaux et comment puis-je y remédier ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-17 20:44:10453parcourir

Why Can't My JavaScript Code Read Local Text Files, and How Can I Fix It?

Dépannage de la lecture de fichiers texte locaux dans le navigateur

Dans le but de créer un lecteur de fichiers texte de base, une fonction JavaScript a été développée pour prendre dans un chemin de fichier, analysez chaque ligne dans un tableau de caractères, mais rencontrez des erreurs. Cet article vise à diagnostiquer et à résoudre ces problèmes.

Diagnostic d'erreur

Initialement, le code n'a pas réussi à afficher le contenu du texte, malgré la récupération réussie du chemin du fichier. Lors du débogage, il a été découvert que l'objet XMLHttpRequest ne gérait pas correctement l'accès aux fichiers locaux.

Le passage à Firefox a donné de bons résultats, mettant en évidence un problème potentiel spécifique au navigateur. Chrome, en particulier, lançait une exception XMLHttpRequest 101, indiquant une erreur réseau.

Solution pour la compatibilité du navigateur

Pour résoudre le problème de compatibilité du navigateur, l'API Fetch, introduit dans JS en 2015, offre une approche plus simple et plus robuste pour récupérer des données à partir d'URL. Voici une version mise à jour du code :

fetch("myText.txt")
  .then((res) => res.text())
  .then((text) => {
    // process the text content
  })
  .catch((e) => console.error(e));

Accès aux fichiers locaux

Les navigateurs modernes restreignent sévèrement l'accès direct au système de fichiers, donc l'utilisation de file:/// doit être évitée . Au lieu de cela, des serveurs Web légers tels que python -m http.server ou npx http-server peuvent être utilisés pour charger des données via des URL HTTP standard.

Statut de gestion 0

Quand En accédant aux fichiers locaux à l'aide de XMLHttpRequest, aucun statut n'est renvoyé. Pour résoudre ce problème, une vérification du statut 0 est nécessaire :

function readTextFile(file) {
  var rawFile = new XMLHttpRequest();
  rawFile.open("GET", file, false);
  rawFile.onreadystatechange = function () {
    if (rawFile.readyState === 4) {
      if (rawFile.status === 200 || rawFile.status == 0) {
        // process the text content
      }
    }
  };
  rawFile.send(null);
}

Exemple d'utilisation

Pour utiliser le code mis à jour, spécifiez le chemin du fichier à l'aide de file:// /:

readTextFile("file:///C:/your/path/to/file.txt");

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn