2012-11-12 10 views
7

मैं स्क्रिप्ट फ़ाइल की मूल निर्देशिका से फ़ाइल भेजने के लिए expressjs की sendfile का उपयोग करना चाहता हूं। मैं क्या करने की कोशिश की है:expressjs: मूल निर्देशिका से फ़ाइल भेजना

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

मैं एक वर्जित त्रुटि मिलती है क्योंकि जाहिरा तौर पर, Sendfile पथ ट्रेवर्सल पर भरोसा नहीं करता है। अब तक मैं यह पता लगाने में असमर्थ हूं कि sendfile के माध्यम से भेजी गई फ़ाइलों के लिए निर्देशिका को कैसे बदला जाए। कोई संकेत?

संपादित करें: यह पोस्ट करते समय मैं थक गया था, असल में यह आसान है। अगर कोई इस पर ठोकर खाए तो मैं इसे यहां छोड़ दूंगा।

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

सर्वर पर स्थिर संसाधनों के लिए, आप 'express.static' का भी उपयोग कर सकते हैं। आदर्श रूप से sendFile फ़ंक्शन स्थिर सामग्री के लिए फ़ाइलों (क्लाइंट डाउनलोड फ़ाइल) की सेवा के लिए नहीं है। – smitrp

उत्तर

2

express.static उपयोग करने के लिए आप की जरूरत है: वहाँ है कि आप सिर्फ इतना है कि ऐसा करने के लिए, तो तरह की अनुमति देता है Sendfile के लिए एक विकल्प पैरामीटर है।

आप निम्नलिखित निर्देशिका की स्थापना की है कहते हैं:

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

res.sendfile के लिए "महीन-अनाज" का मतलब है करने के लिए फ़ाइलों को स्थानांतरित करना:

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

तो आप निम्नलिखित एक्सप्रेस विन्यास होना चाहिए ग्राहक। See API docs for example

+0

'कॉन्फ़िगरेशन' विधि एक्सप्रेस 3 में मौजूद नहीं प्रतीत होती है –

1

मूल फ़ोल्डर:

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

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

आप यहाँ और अधिक जानकारी प्राप्त कर सकते -app -routes.js -index.html ऊपर मामले में, जोड़े parent.js को मूल निर्देशिका से फ़ाइल भेजने के लिए निम्न कोड।

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

app.get('/', function(req, res){ 
res.sendFile(path.join(__dirname + '/../index.html')); 
}); 
संबंधित मुद्दे