2015-04-07 11 views
6

Próbuję uzyskać lokalizację katalogu pliku i nie wiem, jak go uzyskać. Nie mogę znaleźć modułu, który pozwoli mi to zrobić.Pobranie katalogu ze ścieżki pliku lub adresu URL

Tak na przykład, że mam ten ciąg:

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

jak mogę uzyskać to:

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

wiem, że mogę używać coś takiego:

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

Ale Nie jestem pewien, czy to jest tak dobre metody, jak coś, co może być wbudowane w węzeł.

Próbowałem również:

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

a wynik nie wraca co szukam, który pobiera pełną ścieżkę w tym pliku.

Czy jest coś wbudowanego w węzeł, który może to zrobić i zrobić to dobrze?

+1

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

+1

że jest przeciwieństwem tego, co chcę . Chcę, aby ścieżka nie była nazwą pliku –

+0

jeśli spojrzałeś na odpowiedź i kliknąłeś na dokumentację, funkcja bezpośrednio nad tą, którą łączył, była tym, czego szukałeś. – user2879041

Odpowiedz

11

Korzystanie path moduł node.js:

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

powraca

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

To faktycznie zwraca '/ this/is/a/path/to/a', bez ostatniego '/' – josemmo

+0

Zaktualizowany, dobry połów – Hypaethral

8

użyciu zwykłego JS, to będzie działać:

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' 

albo ... jeśli wolisz jeden liner (przy użyciu regex):

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

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

albo ... wreszcie , dobry stary (i szybszy):

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

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

myślę szukasz path.dirname

-1

Dla zwykłego JavaScriptu, to będzie działać:

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) 
Powiązane problemy