2016-01-11 19 views
5

में अनुमति के साथ निर्देशिका बनाएं I mddirp node मॉड्यूल का उपयोग कर फ़ोल्डर बनाने की कोशिश कर रहा हूं। लेकिन यह अनुमति 0775 के साथ बना रहा है लेकिन मुझे 0777 अनुमति के साथ बनाने की आवश्यकता है। आधिकारिक दस्तावेज का कहना है कि यह 0777 के लिए डिफ़ॉल्ट है लेकिन मेरे मामले में यह 0755 है। क्या कोई मेरी मदद कर सकता है? कोड:नोड जेएस

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

प्रलेखन कहा गया है कि डिफ़ॉल्ट 0777 & (~process.umask()) है, जिसका अर्थ है है कि आपके umask मूल्य 0777 से "को घटाया" चूंकि उमास्क आमतौर पर 002 या 022 है, तो आप 0775 या 0755 के साथ समाप्त होते हैं।

हालांकि, अगर आप एक आपूर्ति करते हैं 0777 mkdirp() पर अनुमति, अंतर्निहित सिस्टम कॉल अभी भी उमास्क मान लागू करेगी। वैकल्पिक रूप से

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

आप fs.chmod() उपयोग कर सकते हैं सही अनुमति सेट करने के लिए,: इससे बचने के लिए आप umask स्पष्ट करने के लिए (वैकल्पिक) की अनुमति आप चाहते हैं का उपयोग कर निर्देशिका बनाने, और पिछला मान लिए umask बहाल की जरूरत है, निर्देशिका के निर्माण के बाद।

+0

मुझे यह सहायक जानकारी देने के लिए धन्यवाद। – iam

+0

mkdirp पुनरावर्ती निर्देशिका नहीं बना रहा है। यदि मेरा स्थान है: 'public/images/p /' + place_id + '/ ls /'; और केवल मेरे पास/p/फ़ोल्डर तक है। मेरे मामले में यह place_id तक उत्पन्न हो रहा है। क्या आप इससे मेरी मदद कर सकते हैं? – iam

+0

@iam कृपया अब बनाया गया – robertklep