2012-11-12 40 views
7

Tôi muốn sử dụng tệp gửi của expressjs để gửi tệp từ thư mục mẹ của tệp tập lệnh. Những gì tôi đã cố gắng làm là:expressjs: Gửi tệp từ thư mục mẹ

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

Tôi nhận được lỗi cấm vì dường như, gửi mật khẩu không tin cậy truyền tải đường dẫn. Cho đến nay tôi đã không thể tìm ra cách thay đổi thư mục cho các tập tin được gửi qua sendfile. Bất kỳ gợi ý nào?

Chỉnh sửa: Tôi đã rất mệt mỏi khi đăng bài này, trên thực tế nó rất dễ dàng. Tôi sẽ để nó ở đây trong trường hợp bất kỳ ai khác tình cờ gặp điều này. Có thông số tùy chọn cho tệp gửi cho phép bạn thực hiện điều đó, như vậy:

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

Đối với tài nguyên tĩnh trên máy chủ, bạn cũng có thể sử dụng 'express.static'. Chức năng sendFile lý tưởng là để phục vụ các tệp (tệp tải xuống của khách hàng) chứ không phải cho nội dung tĩnh. – smitrp

Trả lời

5

Bạn phải đề cập gốc là tham số thứ hai của sendfile().

Ví dụ:

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

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

Bạn có thể tìm thêm chi tiết ở đây: thư mục https://github.com/visionmedia/express/issues/1465

2

Bạn cần sử dụng express.static.

Giả sử bạn có các thư mục sau thành lập:

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

Sau đó, bạn cần phải có cấu hình nhanh sau:

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

res.sendfile là có nghĩa là cho "mịn hạt" chuyển các tập tin đến khách hàng. See API docs for example.

+0

phương thức 'configure' dường như không tồn tại trong Express 3 –

1

mẹ: -app -routes.js -index.html Trong trường hợp trên, Thêm đoạn mã sau để routes.js gửi một tệp từ thư mục mẹ.

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

app.get('/', function(req, res){ 
res.sendFile(path.join(__dirname + '/../index.html')); 
}); 
Các vấn đề liên quan