2014-11-18 6 views
18

मैं एक यूआरएल कैसे पार्स कर सकता हूं?Node.js, URL से पार्स फ़ाइल नाम

site.com:8080/someFile.txt?attr=100 

या

site.com:8080/someFile.txt/?attr=100 

मैं someFile.txt, जहां एक फ़ाइल नाम मैं प्रारूप (txt या कुछ अन्य) के रूप में अपने आप द्वारा निर्धारित है प्राप्त करने की आवश्यकता।

अद्यतन

मैं

var path = url.parse(req.url).path; 

की कोशिश की लेकिन मैं अभी भी पथ (someFile.txt) नहीं मिल सकता है।

+1

आपको शुरुआत से सभी विवरणों का उल्लेख करना चाहिए। - http://nodejs.org/docs/latest/api/url.html – Cheery

+2

क्या आपका मतलब है कि आप 'someFile.txt' प्राप्त करना चाहते हैं? – falsetru

+0

हां। यह सर्वर पर कोई फ़ाइल हो सकती है (यानी 'Kitty.jpg' या' order.json')। – Aaron

उत्तर

33

कुछ इस तरह ..

var url = require("url"); 
var path = require("path"); 
var parsed = url.parse("http://example.com:8080/test/someFile.txt/?attr=100"); 
console.log(path.basename(parsed.pathname)); 
+0

मैं node.js सर्वर का उपयोग करता हूं। और मैं सर्वर की तरफ कोड को पार्स करने का प्रयास करता हूं। – Aaron

-1

आपका उदाहरण आसानी से Node.js’s url module का उपयोग कर के साथ निपटा जा सकता है:

var URL = require('url').parse('site.com:8080/someFile.txt?attr=100'); 
console.log(URL.pathname.replace(/(^\/|\/$)/g,'')); // "someFile.txt" 

हालांकि, इस Node.js के अनुकरणीय यूआरएल के साथ काम नहीं करता है ('यह है कारण अधिक रास्ता मिला)।

पूर्ण पथ अपनी दायीं स्लैश पर शुरू truncanting से, यह फ़ाइल नाम उपज होगी:

var URL = require('url').parse('http://user:[email protected]:8080/p/a/t/h?query=string#hash'); 
console.log(URL.pathname.substring(URL.pathname.lastIndexOf('/')+1)); // "h" 

और अगर उस विचार के उपकरण के लिए पर्याप्त सुरक्षित माना जाता है, हम यह स्पष्ट कर सकते हैं:

var file = url.substring(url.lastIndexOf('/')+1).replace(/((\?|#).*)?$/,''); 
           /* hashes and query strings ----^ */ 
संबंधित मुद्दे