2012-09-02 16 views
0

我希望能夠得到快速處理幾個目錄(不只是一個)爲「靜態」 - 即,如果該文件在那裏,然後服務它。幾個獨立的靜態目錄使用不同的路徑使用Express

Connect的static()模塊似乎適合希望在服務器根目錄中提供特定目錄中的文件的用戶。但是,那不是我想要的。什麼我後,是像這樣結束:

  • GET /模塊/ MODULE1 - >返回模塊文件/ MODULE1 /公共
  • GET /模塊/ MODULE2 - >返回模塊文件/ MODULE2 /公共
  • GET /模塊/單詞數 - >返回模塊文件/單詞數/公共

我在看的static的來源,輪流使用send,這反過來定義SendStream,更是把文件路徑直接來自請求(不是 我想要的是)。

有沒有簡單的方法來做到這一點?

Merc。

回答

1

有什麼錯

app.use('/modules/MODULE1', express.static('modules/MODULE1/public')) 

爲每個模塊?

+0

我我的手機上,但......天哪將這個真的只是這樣的工作?那容易..? – Merc

+0

唯一錯誤的是它不起作用。 'express.static()'的定義是'exports = module.exports = function static(root,options){'...太好了,不真實 – Merc

+0

oops你是對的。根應該在app.use中。編輯。 –

0

答案就在這裏:

https://groups.google.com/forum/?fromgroups=#!topic/express-js/kK9muR0mjR4

基本上是:

var st = express.static(
    __dirname + app.set('path.static'), 
    { maxAge : app.set('static.expiry') } 
); 

app.get(/^\/static\/(v.+?\/)?(.+$)/, function (req, res, next) { 
    req.url = req.params[1]; 
    st(req, res, next); 
}); 

基本上,因爲靜態考慮req.url,這是黑客攻擊它,使它 「期待權」 的問題時, /如果路徑匹配。

我問TJ他會不會將其添加爲一個選項,他(正確地)回答:

這不是發送()應該做的,你已經可以與連接做到這一點很容易/與表達幾個靜態的()中間件,你只需要做相同的,但更多的手動與發送()

https://github.com/visionmedia/send/issues/10#issuecomment-8225096

相關問題