2011-04-03 14 views
10

का उपयोग कर फ़ाइल अपलोड करें मैं node.js और प्रबल मॉड्यूल का उपयोग कर फ़ाइल अपलोड करने में सफल हूं, डिस्क पर सहेजी गई फ़ाइल किसी प्रकार का खराब प्रारूप (खराब एन्कोडिंग) उदा। अगर मैं एक छवि अपलोड करता हूं तो मैं इसे नहीं देख सकता, अगर मैं एक txt फ़ाइल अपलोड करता हूं gedit निम्नलिखित संदेश प्रदान करता है: "जीएडिटिट एन्कोडिंग का पता लगाने में सक्षम नहीं है। कृपया जांचें कि आप एक बाइनरी फ़ाइल खोलने की कोशिश नहीं कर रहे हैं मेनू से एक वर्ण एन्कोडिंग का चयन करें और पुनः प्रयास करें। "नोडजेएस और नोड-फॉर्मिडेबल

form.encoding = 'utf-8'; 
form.parse(req, function(err, fields, files) { 
    fs.writeFile('test.js', files.upload,'utf8', function (err) { 
      if (err) throw err; 
      console.log('It\'s saved!'); 
    }); 
}); 

उत्तर

4

प्रपत्र = "बहुखण्डीय/फार्म-डेटा" ENCTYPE करने के लिए सेट है:

यहाँ कोड है?

मैं केवल एक्सप्रेस के साथ दुर्जेय का उपयोग किया है - एक्सप्रेस उदाहरण ठीक काम करता है:

https://github.com/visionmedia/express/tree/master/examples/multipart

18

समस्या यह है कि files.upload फ़ाइल की सामग्री नहीं है, यह का एक उदाहरण है नोड-फॉर्मिडेबल से फ़ाइल क्लास।

देखो पर:

https://github.com/felixge/node-formidable/blob/master/lib/file.js

इसके बजाय डिस्क पर फ़ाइल फिर से लिखने की कोशिश कर के

, तो आप सिर्फ इस तरह फ़ाइल अपलोड की गई और जहां यह स्थानांतरित करने के लिए आप fs.rename() का उपयोग करने के लिए पथ का उपयोग कर सकते चाहते हैं:

fs.rename(files.upload.path, 'yournewfilename', function (err) { throw err; }); 
संबंधित मुद्दे