在节点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() 设置正确的权限。