【问题标题】:create directory with permission in node js在节点js中创建具有权限的目录
【发布时间】:2016-04-15 17:14:17
【问题描述】:

我正在尝试使用 mkdirp 节点模块创建一个文件夹。但它是在 0775 权限下创建的,但我需要在 0777 权限下创建。官方文档说它默认为 0777,但在我的情况下它是 0755。任何人都可以帮助我吗? 代码:

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

【问题讨论】:

  • 不工作,尝试 mkdirp(new_location, {mode: "777"} , function (err) { });

标签: javascript node.js mkdir


【解决方案1】:

文档指出默认值为0777 & (~process.umask()),这意味着您的 umask 值是从 0777 中“减去”的。由于 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 没有递归创建目录。如果我的位置是:'public/images/p/'+place_id+'/ls/';只有我有直到 /p/ 文件夹。就我而言,它正在生成直到 place_id。你能帮我解决这个问题吗?
  • @iam 请为此创建一个新问题
猜你喜欢
  • 2012-06-13
  • 2018-11-20
  • 2015-06-13
  • 2010-10-08
  • 2016-02-11
  • 1970-01-01
  • 1970-01-01
  • 2012-01-17
  • 2018-02-09
相关资源
最近更新 更多