2012-07-13 17 views

Respuesta

-3
fs.createReadStream(path).pipe(res); 
+2

Tendría que escribir explícitamente al menos los encabezados 'Content-Type' y' Content-Length' de antemano. – ebohlman

+0

Además, GZip Compression no funcionará con esto. –

68

res.sendFile(path_to_file); es todo lo que necesita; establecerá automáticamente los encabezados correctos y transferirá el archivo (internamente usa el mismo código que express.static).

+1

Hace alrededor de una hora que lo busco ... Es exactamente lo que necesito. ¡Gracias! –

+4

Estaba obteniendo 403 de esto. Tenía que hacer 'res.sendfile (relativePath, {root: theDirectory})' – kumar303

+2

si su carpeta está fuera de la del archivo JS en ejecución, agregaría algunos detalles al comentario @ kumar303: no puede poner "../" en relativePath, pero puede agregarlo en el directorio. res.sendfile (pic.png, {root: __dirname + "../../../ images /"}) – Rayjax

4
app.use("/css/myfile.css", express.static(__dirname + '/css/myfile.css')); 
+0

'app.use ("/", express.static (__ dirname +" /index.html ")) 'da un 404 para mí. 'app.use ("/", express.static (__ dirname))' funciona. – Niklas

+1

que es extraño, funciona para mí. Tengo app.use ('/', express.static (__ dirname + '/wwwroot/index.html')); Creo que el orden en que aparecen las llamadas a la aplicación hace una diferencia. Así que asegúrese de que no lo está mapeando en otro lugar primero que está dando el 404. –

+2

Obtengo un comportamiento extraño 303 que dirige a la ruta más una barra inclinada. Parece que estático solo se supone que funciona en directorios. –

2

publiqué una pequeña biblioteca para servir archivos estáticos individuales: https://www.npmjs.com/package/connect-static-file

npm install connect-static-file

var staticFile = require('connect-static-file'); app.use('/ipad', staticFile(__dirname + '/ipad.html'));

La principal diferencia con express.static es que no se preocupa por la solicitud de URL , siempre sirve ese archivo si la ruta coincide. De repente, no comienza a servir un directorio completo si nombra su directorio "ipad.html".

Cuestiones relacionadas