Estoy tratando de escribir un lector de archivos de texto simple creando una función que tome la ruta del archivo y convierta cada línea de texto en una matriz de caracteres, pero no funciona.
function readTextFile() {
var rawFile = new XMLHttpRequest();
rawFile.open("GET", "testing.txt", true);
rawFile.onreadystatechange = function() {
if (rawFile.readyState === 4) {
var allText = rawFile.responseText;
document.getElementById("textSection").innerHTML = allText;
}
}
rawFile.send();
}
¿Qué está mal aquí?
Esto todavía no parece funcionar después de cambiar el código un poco de una revisión anterior y ahora me está dando unXMLHttpRequest
excepción 101.
He probado esto en Firefox y funciona, pero en Google Chrome simplemente no funciona y me sigue dando una Excepción 101. ¿Cómo puedo hacer que esto funcione no solo en Firefox, sino también en otros navegadores (especialmente Chrome )?
status
de las0
, así como200
.Respuestas:
Debe verificar el estado 0 (ya que al cargar archivos localmente con
XMLHttpRequest
, no se devuelve un estado porque no es de aWebserver
)Y especifique
file://
en su nombre de archivo:fuente
file:///User/Danny/Desktop/javascriptWork/testing.txt
en la barra de URL de tu navegador y ver si puedes ver el archivo ..true
. Si se trata de unalocal
búsqueda simple, entonces establecer asíncrono enfalse
está bien, peroonreadystatechange
no es necesario mientras está configurado en falso. Aquí está la documentación: w3schools.com/ajax/ajax_xmlhttprequest_send.aspVisite Javascripture ! Y vaya a la sección readAsText y pruebe el ejemplo. Usted será capaz de saber cómo la readAsText función de FileReader funciona.
fuente
Después de la introducción de fetch api en javascript, leer el contenido del archivo no podría ser más simple.
leyendo un archivo de texto
leyendo un archivo json
Actualización 30/07/2018 (descargo de responsabilidad):
Actualización-2 (descargo de responsabilidad):
fuente
Referer
". Supongo que esto significa adiós a los buenos ol'FileReaders y HttpRequests (y no los extrañaré un poco;)Fetch API cannot load file:///C:/Users/path/to/file/file.txt. URL scheme must be "http" or "https" for CORS request.
fuente
var reader = new FileReader();
travésreader.readAsBinaryString(..)
, lee el contenido de mi archivo de texto. Limpio, elegante, funciona como un encanto. La mejor respuesta para mí en este hilo: ¡gracias!Jon Perryman,
Sí, js puede leer archivos locales (ver FileReader ()) pero no automáticamente: el usuario tiene que pasar el archivo o una lista de archivos al script con un html
<input type=file>
.Luego, con js es posible procesar (vista de ejemplo) el archivo o la lista de archivos, algunas de sus propiedades y el contenido del archivo o archivos.
Lo que js no puede hacer por razones de seguridad es acceder automáticamente (sin la entrada del usuario) al sistema de archivos de su computadora.
Para permitir que js acceda automáticamente a fs local, es necesario crear no un archivo html con js dentro, sino un documento hta.
Un archivo hta puede contener js o vbs dentro de él.
Pero el ejecutable hta funcionará solo en sistemas Windows.
Este es el comportamiento estándar del navegador.
También Google Chrome trabajó en la API de FS, más información aquí: http://www.html5rocks.com/en/tutorials/file/filesystem/
fuente
Probablemente ya lo haya intentado, escriba "falso" de la siguiente manera:
fuente
Intenta crear dos funciones:
fuente
otro ejemplo: mi lector con la clase FileReader
fuente
Solución moderna:
Cuando el usuario carga un archivo de texto a través de esa entrada, se registrará en la consola. Aquí hay una demostración de jsbin que funciona .
Aquí hay una versión más detallada:
Actualmente (enero de 2020) esto solo funciona en Chrome y Firefox, verifique aquí la compatibilidad si está leyendo esto en el futuro: https://developer.mozilla.org/en-US/docs/Web/API/Blob/text
En navegadores antiguos, esto debería funcionar:
fuente
Usando la función Fetch y async
fuente
Esto podría ayudar
fuente
Además de algunas de las respuestas anteriores, esta solución modificada funcionó para mí.
....
....
fuente
- leer el texto del archivo desde javascript
- Texto de registro de la consola desde el archivo usando javascript
- Google chrome y mozilla firefox
en mi caso tengo esta estructura de archivos:
el resultado de console.log:
fuente
fuente
Obtenga datos de archivos locales en carga js (data.js):
archivo de data.js como:
Dynamic UnixTime queryString evita el almacenamiento en caché.
AJ trabaja en la web http: //.
fuente
Las llamadas locales AJAX en Chrome no son compatibles debido a la política del mismo origen.
El mensaje de error en Chrome es así: "Las solicitudes de origen cruzado no son compatibles con los esquemas de protocolo: http, data, chrome, chrome-extension, https".
Esto significa que Chrome crea un disco virtual para cada dominio para mantener los archivos servidos por el dominio utilizando protocolos http / https. Cualquier acceso a archivos fuera de este disco virtual está restringido bajo la misma política de origen. Las solicitudes y respuestas de AJAX ocurren en http / https, por lo tanto, no funcionarán para archivos locales.
Firefox no establece esa restricción, por lo tanto, su código funcionará correctamente en Firefox. Sin embargo, también hay soluciones para Chrome: consulte aquí .
fuente
Puedes importar mi biblioteca:
entonces, la función
fetchfile(path)
devolverá el archivo cargadoTenga en cuenta: en Google Chrome si el código HTML es local, aparecerán errores, pero guardar el código HTML y los archivos en línea y luego ejecutar el archivo HTML en línea funciona.
fuente
Para leer el texto de un archivo local
JavaScript
mediante Chrome, el navegador Chrome debe ejecutarse con el argumento--allow-file-access-from-files
para permitir que JavaScript acceda al archivo local, luego puede leerlo deXmlHttpRequest
la siguiente manera:fuente
¿Cómo leer un archivo local?
Al usar esto, cargará un archivo mediante loadText (), luego JS esperará asincrónicamente hasta que se lea y cargue el archivo, luego ejecutará la función readText (), lo que le permitirá continuar con su lógica JS normal (también puede escribir un intento de captura bloque en la función loadText () en caso de que surja algún error) pero para este ejemplo lo mantengo al mínimo.
fuente
Lo sé, llego tarde a esta fiesta. Déjame mostrarte lo que tengo.
Esta es una simple lectura del archivo de texto
Espero que esto ayude.
fuente