2015-04-07 12 views
6

Ich versuche, den Speicherort einer Datei zu bekommen, und ich bin mir nicht sicher, wie Sie es bekommen. Ich kann kein Modul finden, das mir dies erlaubt.Holen Sie sich das Verzeichnis aus einem Dateipfad oder URL

So zum Beispiel sagen, ich habe diese Zeichenfolge:

/this/is/a/path/to/a/file.html 

wie kann ich dies:

/this/is/a/path/to/a 

Ich weiß, dass ich so etwas wie dieses verwenden:

path.substr(0, path.lastIndexOf("/") - 1); 

Aber Ich bin nicht sicher, ob das eine Methode so gut ist wie etwas, das in Knoten eingebaut werden könnte.

Ich habe auch versucht:

var info = url.parse(full_path); 
console.log(info); 

und das Ergebnis nicht zurück, was ich suche, das den vollständigen Pfad einschließlich des Dateinamens wird.

Also, ist etwas in den Knoten eingebaut, das das tun kann und es gut macht?

+1

http://stackoverflow.com/questions/19811541/nodejs-get-file-name-from-absolute-path – user2879041

+1

, das ist das Gegenteil von dem, was ich will . Ich möchte den Pfad nicht den Dateinamen –

+0

, wenn Sie die Antwort angesehen und auf die Dokumentation geklickt hat, ist die Funktion direkt über dem, was sie gesucht haben – user2879041

Antwort

11

Mit path Modul von node.js:

path.dirname('/this/is/a/path/to/a/file'); 

kehrt

'/this/is/a/path/to/a' 
+0

Es gibt tatsächlich '/ this/ist/a/Pfad/zu/a', ohne die letzte '/' – josemmo

+0

Aktualisiert, guter Fang – Hypaethral

8

Mit Ebene JS, dies funktionieren wird:

var e = '/this/is/a/path/to/a/file.html' 
e = e.split('/')   //break the string into an array 
e.pop()      //remove its last element 
e= e.join('/')    //join the array back into a string 

//result: '/this/is/a/path/to/a' 

OR ..., wenn Sie es vorziehen, eine Einzeiler (mit Regex):

"/this/is/a/path/to/a/file.html".replace(/(.*?)[^/]*\..*$/,'$1') 

//result: '/this/is/a/path/to/a/' 

OR ... schließlich , die gute altmodische (und schnellere):

var e = '/this/is/a/path/to/a/file.html' 
e.substr(0, e.lastIndexOf("/")) 

//result: '/this/is/a/path/to/a' 
2

Ich glaube, Sie suchen path.dirname

-1

Für Ebene JavaScript, dies funktionieren wird:

function getDirName(e) 
{ 
    if(e === null) return '/'; 

    if(e.indexOf("/") !== -1) 
    { 
     e = e.split('/')   //break the string into an array 
     e.pop()      //remove its last element 
     e= e.join('/')    //join the array back into a string 
     if(e === '') 
       return '/'; 
     return e; 
    } 

    return "/"; 
} 


var e = '/this/is/a/path/to/a/file.html' 
var e = 'file.html' 
var e = '/file.html' 
getDirName(e) 
Verwandte Themen