在节点js中创建具有权限的目录
create directory with permission in node js
我正在尝试使用 mkdirp 节点模块创建文件夹。但它是在 0775 权限下创建的,但我需要在 0777 权限下创建。官方文档说它默认为 0777,但在我的情况下是 0755。有人可以帮我吗?
代码:
var new_location = 'public/images/u/7/';
mkdirp(new_location, function(err) {
if (err) {
} else {
}
});
文档指出默认值为 0777 & (~process.umask())
,这意味着您的 umask 值是来自 0777 的 "subtracted"。由于 umask 通常为 002 或 022,因此您最终得到 0775 或 0755 .
然而,即使您向 mkdirp()
提供 0777 权限,底层系统调用仍将应用 umask 值。为防止这种情况发生,您需要清除 umask,使用您想要的权限创建目录,并(可选)将 umask 恢复到它以前的值:
var oldmask = process.umask(0);
mkdirp(new_location, '0777', function(err) {
process.umask(oldmask);
if (err) ...
...
});
或者,您可以在创建目录后使用 fs.chmod()
设置正确的权限。
我正在尝试使用 mkdirp 节点模块创建文件夹。但它是在 0775 权限下创建的,但我需要在 0777 权限下创建。官方文档说它默认为 0777,但在我的情况下是 0755。有人可以帮我吗? 代码:
var new_location = 'public/images/u/7/';
mkdirp(new_location, function(err) {
if (err) {
} else {
}
});
文档指出默认值为 0777 & (~process.umask())
,这意味着您的 umask 值是来自 0777 的 "subtracted"。由于 umask 通常为 002 或 022,因此您最终得到 0775 或 0755 .
然而,即使您向 mkdirp()
提供 0777 权限,底层系统调用仍将应用 umask 值。为防止这种情况发生,您需要清除 umask,使用您想要的权限创建目录,并(可选)将 umask 恢复到它以前的值:
var oldmask = process.umask(0);
mkdirp(new_location, '0777', function(err) {
process.umask(oldmask);
if (err) ...
...
});
或者,您可以在创建目录后使用 fs.chmod()
设置正确的权限。