Quiero escribir datos en un archivo existente usando JavaScript. No quiero imprimirlo en la consola. Quiero escribir datos en realidad abc.txt
. Leí muchas preguntas respondidas, pero en todas partes están imprimiendo en la consola. en algún lugar han dado código pero no funciona. Entonces, ¿alguien puede ayudarme? Cómo escribir datos en un archivo.
Remití el código pero no funciona: está dando un error:
TypeError no capturado: constructor ilegal
en cromo y
SecurityError: la operación es insegura.
en Mozilla
var f = "sometextfile.txt";
writeTextFile(f, "Spoon")
writeTextFile(f, "Cheese monkey")
writeTextFile(f, "Onion")
function writeTextFile(afilename, output)
{
var txtFile =new File(afilename);
txtFile.writeln(output);
txtFile.close();
}
Entonces, ¿podemos realmente escribir datos en el archivo usando solo Javascript o NO?
javascript
html
pareshm
fuente
fuente
Respuestas:
Algunas sugerencias para esto:
fuente
Puede crear archivos en el navegador usando
Blob
yURL.createObjectURL
. Todos los navegadores recientes lo admiten .No puede guardar directamente el archivo que crea, ya que eso causaría problemas de seguridad masivos, pero puede proporcionarlo como un enlace de descarga para el usuario. Puede sugerir un nombre de archivo a través del
download
atributo del enlace, en navegadores que admitan el atributo de descarga. Al igual que con cualquier otra descarga, el usuario que descargue el archivo tendrá la última palabra sobre el nombre del archivo.Aquí hay un ejemplo que usa esta técnica para guardar texto arbitrario de a
textarea
.Si desea iniciar inmediatamente la descarga en lugar de requerir que el usuario haga clic en un enlace, puede usar eventos del mouse para simular un clic del mouse en el enlace como lo hizo la respuesta de Lifecube . He creado un ejemplo actualizado que usa esta técnica.
fuente
URL
). Establecer el nombre del archivo no funcionará en Safari porque aún no ha implementado eldownload
atributo .\n
para representar nuevas líneas como lo hacen los programas UNIX. Probablemente lo esté viendo en un programa de Windows, como el Bloc de notas, que no representa el\n
carácter como una nueva línea . Si desea que las nuevas líneas que se representan correctamente en el Bloc de notas y algunos otros programas de Windows, antes de poner el texto en elBlob
reemplazar cada\n
con\r\n
:text = text.replace(/\n/g, '\r\n')
.mouseover
en el enlace, pero dependiendo de cuánto procesamiento esté haciendo eso podría no funcionar muy bien.Si está hablando de JavaScript del navegador, no puede escribir datos directamente en el archivo local por razones de seguridad. La nueva API HTML 5 solo puede permitirle leer archivos.
Pero si desea escribir datos, y permitir que el usuario descargue como un archivo local. funciona el siguiente código:
para usarlo:
download('the content of the file', 'filename.txt', 'text/plain');
fuente
La respuesta anterior es útil, pero encontré un código que te ayuda a descargar el archivo de texto directamente al hacer clic en el botón. En este código también puede cambiar
filename
lo que desee. Es pura función de JavaScript con HTML5. ¡Funciona para mi!fuente
createObjectURL
. A diferencia de la mayoría de las cosas en JS, los objetos que crea con él no se recolectan automáticamente cuando no hay más referencias a ellos; solo se recolectan cuando se cierra la página. Como no está utilizandoURL.revokeObjectURL()
este código para liberar la memoria utilizada por la última llamada, tiene una pérdida de memoria; Si el usuario llamasaveTextFile
varias veces, continuará consumiendo más y más memoria porque nunca la liberó.Tratar
fuente
En el caso de que no sea posible usar la nueva
Blob
solución, esa es sin duda la mejor solución en el navegador moderno, aún es posible usar este enfoque más simple, que tiene un límite en el tamaño del archivo por cierto:fuente
Use el código del usuario @ useless-code anterior ( https://stackoverflow.com/a/21016088/327386 ) para generar el archivo. Si desea descargar el archivo automáticamente, pase el
textFile
que se acaba de generar a esta función:fuente
Encontré buenas respuestas aquí, pero también encontré una manera más simple.
El botón para crear el blob y el enlace de descarga se pueden combinar en un enlace, ya que el elemento de enlace puede tener un atributo onclick. (Lo contrario parece imposible, agregar un href a un botón no funciona).
Puede
bootstrap
diseñar el enlace como un botón utilizando , que todavía es JavaScript puro, excepto por el estilo.La combinación del botón y el enlace de descarga también reduce el código, ya que
getElementById
se necesitan menos de esas llamadas feas .Este ejemplo solo necesita hacer clic en un botón para crear el blob de texto y descargarlo:
fuente
Sí, es posible Aquí el código es
fuente