我正在嘗試使用mkdirp節點模塊創建文件夾。但它創建的權限爲0775,但我需要使用0777權限創建。官方文檔說它默認爲0777,但在我的情況下是0755.任何人都可以幫助我嗎? 代碼:在節點js中創建具有權限的目錄
var new_location = 'public/images/u/7/';
mkdirp(new_location, function(err) {
if (err) {
} else {
}
});
我正在嘗試使用mkdirp節點模塊創建文件夾。但它創建的權限爲0775,但我需要使用0777權限創建。官方文檔說它默認爲0777,但在我的情況下是0755.任何人都可以幫助我嗎? 代碼:在節點js中創建具有權限的目錄
var new_location = 'public/images/u/7/';
mkdirp(new_location, function(err) {
if (err) {
} else {
}
});
文檔狀態默認是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()
設置正確的權限目錄創建後。
感謝您給我這個有用的信息。 – iam
mkdirp不會創建遞歸目錄。 如果我的位置是:'public/images/p /'+ place_id +'/ ls /'; 只有我有,直到/ p /文件夾。 在我的情況下,它正在生成,直到place_id。 你能幫我解決嗎? – iam
@iam請爲現在創建的 – robertklep
嘗試:
var fs = require('fs');
var new_location = 'public/images/u/7/';
fs.mkdir(new_location , 0755, function (err) {
if (err) {}
});
}
看看這裏也https://nodejs.org/api/fs.html#fs_fs_mkdir_path_mode_callback
不工作,試過mkdirp(new_location,{mode:「777」},function(err){}); – iam