2016-01-11 14 views
5

Próbuję utworzyć folder przy użyciu modułu węzła mkdirp. ale tworzy się za zezwoleniem 0775, ale muszę utworzyć z uprawnieniem 0777. oficjalna dokumentacja mówi, że domyślnie jest 0777, ale w moim przypadku jest to 0755. czy ktoś może mi pomóc? Kod :Utwórz katalog z uprawnieniami w węźle js

var new_location = 'public/images/u/7/'; 
mkdirp(new_location, function(err) { 
    if (err) { 
    } else { 
    } 
}); 
+0

nie działa, wypróbowane mkdirp (nowe położenie, {tryb: "777"}, funkcja (err) {}); – iam

Odpowiedz

9

Dokumentacja wskazuje, że domyślnie jest 0777 & (~process.umask()), co oznacza, że ​​wartość umask jest "odejmuje" z 0777 Ponieważ umask zwykle jest 002 lub 022, kończysz z 0775 lub 0755.

Jednak nawet jeśli dostarczysz 0777 pozwolenie na mkdirp(), bazowe wywołanie systemowe nadal będzie stosować wartość umask. Aby temu zapobiec, trzeba wyczyścić umask, utworzyć katalog używając pozwolenie chcesz, i (opcjonalnie) przywrócić umask do jego poprzedniej wartości:

var oldmask = process.umask(0); 
mkdirp(new_location, '0777', function(err) { 
    process.umask(oldmask); 
    if (err) ... 
    ... 
}); 

Alternatywnie, można użyć fs.chmod() ustawić odpowiednie uprawnienia po utworzeniu katalogu.

+0

dzięki za udzielenie mi tych przydatnych informacji. – iam

+0

mkdirp nie tworzy rekurencyjnie katalogu. , jeśli moja lokalizacja to: "public/images/p/'+ place_id +'/ls /"; i tylko mam do/p/folderu. w moim przypadku generuje do place_id. możesz mi pomóc? – iam

+0

@iam, proszę utworzyć nowe pytanie dla tego – robertklep

Powiązane problemy