2012-11-12 12 views
7

Chciałbym użyć sendfile Expressjs do wysłania pliku z katalogu nadrzędnego pliku skryptu. Co próbowałem zrobić to w ten sposób:expressjs: Wysyłanie pliku z katalogu nadrzędnego

app.get('/', function(req, res){ 
    res.sendfile('../../index.html'); 
}); 

dostaję zabronionego błąd, ponieważ najwyraźniej sendfile nie ufa do ścieżek. Do tej pory nie byłem w stanie wymyślić jak zmienić katalog dla plików wysyłanych przez sendfile. Jakieś wskazówki?

Edytuj: Byłem trochę zmęczony, kiedy zamieszczałem to, w rzeczywistości jest to łatwe. Zostawię to tutaj na wypadek, gdyby ktoś inny natknął się na to. Jest to parametr opcja dla sendfile który pozwala nie tylko, że tak:

app.get('/', function(req, res){ 
    res.sendfile('index.html', { root: "../../"}); 
}); 
+1

Dla zasobów statycznych na serwerze można również użyć wyrażenia "express.static". Idealnie funkcja sendFile służy do wyświetlania plików (pliki do pobrania klienta), a nie do zawartości statycznej. – smitrp

Odpowiedz

5

Musisz podać root jako drugi parametr sendfile().

Na przykład:

app.get('/:dir/:file', function(req, res) { 
    var dir = req.params.dir, 
     file = req.params.file; 

    res.sendfile(dir + '/' + file, {'root': '../'}); 
}); 

można znaleźć więcej szczegółów tutaj: folderu https://github.com/visionmedia/express/issues/1465

2

Trzeba użyć express.static.

że masz następujący katalog skonfigurować:

/app 
    /buried 
     /deep 
      server.js 
    /public 
     index.html 

Następnie należy przygotować następujące Express, konfigurację:

var express = require('express'); 
var server = express.createServer(); 
server.configure(function(){ 
    server.use(express.static(__dirname + '../../public')); 
}); 
server.listen(3000); 

res.sendfile jest przeznaczona dla „drobniejszych ziarnach” Przesyłanie plików do klient. See API docs for example.

+0

Metoda 'configure' nie istnieje w Express 3 –

1

nadrzędny: -APP -routes.js -index.html w powyższym przypadku, Dodaj następujący kod do routes.js, aby wysłać plik z katalogu nadrzędnego.

var path=require("path") //assuming express is installed 

app.get('/', function(req, res){ 
res.sendFile(path.join(__dirname + '/../index.html')); 
}); 
Powiązane problemy