2016-01-11 22 views
5

mkdirpノードモジュールを使用してフォルダを作成しようとしています。 0775の権限で作成していますが、0777の権限で作成する必要があります。公式文書は、それが0777にデフォルトであると言いますが、私の場合は0755です。誰かが私を助けることができますか? コード:ノードjsのパーミッションを持つディレクトリを作成します

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

mkdirp(new_location、{mode: "777"}、function(err){});を試してみました。 – iam

答えて

9

ドキュメントはあなたのumaskの値が0777から "引き算" していることを意味し、デフォルトは0777 & (~process.umask())であると述べていますumaskは一般的に002または022なので、最終的には0775または0755になります。

ただし、 0777のアクセス許可がmkdirp()に設定されている場合は、引き続きumask値が適用されます。それを防ぐために、あなたは、umask値をクリアしたい権限を使用してディレクトリを作成し、(オプションで)その前の値にumask値を復元する必要があります。

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

また、あなたは正しい権限を設定するfs.chmod()を使用することができますディレクトリが作成された後。

+0

この情報をお寄せいただきありがとうございます。 – iam

+0

mkdirpは再帰的にディレクトリを作成していません。 私の場所が 'public/images/p /' + place_id + '/ ls /'の場合は; と私は/ p /フォルダまでしか持っていません。私の場合はplace_idまで生成しています。 これを手伝ってもらえますか? – iam

+0

@iam今作成された – robertklep

関連する問題