watson tutorial parte node español desde descubriendo cómo crear con cero aplicacion node.js express stream

tutorial - Cree un archivo de texto en node.js desde una cadena y transmítalo en respuesta



node js tutorial (4)

  1. Estoy usando express.js

  2. Tengo una cadena "¡Hola mundo!"

  3. Quiero que un usuario haga clic en

    <a href=/download>Download</a>

  4. El usuario debe descargar Hello.txt con el texto, NO abrir una pestaña con el texto.

  5. He buscado formas de lograr esto, supongo que tiene algo que ver con la creación de flujos de lectura desde el búfer y la canalización a la respuesta, pero la mayoría de los ejemplos se relacionan con la lectura de archivos reales del disco, no quiero leer de disco, solo quiero responder con un archivo creado a partir de una cadena.

¡Gracias!


Creo que entiendo lo que estás tratando de hacer. Desea enviar un archivo .txt al cliente sin crear realmente un archivo en el disco.

Esto es en realidad bastante básico, y extremadamente fácil. Todo lo que tienes que hacer es configurar tu tipo MIME en el encabezado, sin embargo, la mayoría de los navegadores no descargan los archivos .txt de forma predeterminada. Solo abren y muestran los contenidos.

var text={"hello.txt":"Hello World!","bye.txt":"Goodbye Cruel World!"}; app.get(''/files/:name'',function(req,res){ res.set({"Content-Disposition":"attachment; filename=/"req.params.name/""}); res.send(text[req.params.name]); });

Como nota futura, puede enviar cualquier dato que esté almacenado como una variable. Si tiene un búfer cargado con una imagen, por ejemplo, puede enviarlo de la misma manera simplemente cambiando el Content-Type ; de lo contrario, el navegador no tiene idea de qué datos está enviando, y expresamente creo que configura el tipo predeterminado text/html . Aquí hay una buena referencia a los tipos de medios de Internet y los tipos MIME .


Esto es trabajo para mí !

var text="hello world"; res.setHeader(''Content-type'', "application/octet-stream"); res.setHeader(''Content-disposition'', ''attachment; filename=file.txt''); res.send(text);


Gracias por la ayuda, chicos, esto es con lo que terminé: @aaron, ¿hay alguna manera de que la disposición funcione en todos los navegadores?

res.setHeader(''Content-disposition'', ''attachment; filename=theDocument.txt''); res.setHeader(''Content-type'', ''text/plain''); res.charset = ''UTF-8''; res.write("Hello, world"); res.end();


Prueba esto:

router.get(''/download'', (req, res) => { var text = ''Hello world!'' res.attachment(''filename.txt'') res.type(''txt'') res.send(text) })