我正在尝试使用mkdirp节点模块创建一个文件夹。但它正在创建0775权限,但我需要创建0777权限。官方文档说它默认为0777但在我的情况下它是0755.任何人都可以帮助我吗? 代码:
var new_location = 'public/images/u/7/';
mkdirp(new_location, function(err) {
if (err) {
} else {
}
});
答案 0 :(得分:12)
文档说明默认值为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()
设置正确的权限。
答案 1 :(得分:0)
试一试:
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