在节点js中创build具有权限的目录

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

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

该文档指出,默认值是0777 & (~process.umask()) 〜process.umask 0777 & (~process.umask()) ,这意味着你的umask值是从0777中“减”的。由于umask通常是002或022,所以你最终会得到0775或0755。

但是,即使您向mkdirp()提供了0777权限,底层系统调用仍将应用umask值。 为了防止这种情况,您需要清除umask,使用所需的权限创build目录,并(可选)将umask恢复到以前的值:

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

或者,可以使用fs.chmod()在创build目录后设置正确的权限。

尝试一下:

  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