2016-01-11 113 views
5

我正在嘗試使用mkdirp節點模塊創建文件夾。但它創建的權限爲0775,但我需要使用0777權限創建。官方文檔說它默認爲0777,但在我的情況下是0755.任何人都可以幫助我嗎? 代碼:在節點js中創建具有權限的目錄

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

不工作,試過mkdirp(new_location,{mode:「777」},function(err){}); – iam

回答

9

文檔狀態默認是0777 & (~process.umask()),這意味着你的umask值從0777 「減去」 。由於umask通常是002或022,因此最終會以0775或0755結尾。

但是,即使您提供0777權限爲mkdirp(),底層系統調用仍將應用umask值。爲了防止這種情況,你需要清除的umask,您要使用的權限創建的目錄,(可選)的umask恢復到以前的值:

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

或者,您可以使用fs.chmod()設置正確的權限目錄創建後。

+0

感謝您給我這個有用的信息。 – iam

+0

mkdirp不會創建遞歸目錄。 如果我的位置是:'public/images/p /'+ place_id +'/ ls /'; 只有我有,直到/ p /文件夾。 在我的情況下,它正在生成,直到place_id。 你能幫我解決嗎? – iam

+0

@iam請爲現在創建的 – robertklep

相關問題