दिलचस्प पोस्ट
एंड्रॉइड प्राथमिकताएं: जब उपयोगकर्ता ने वरीयताएँ-स्क्रीन का इस्तेमाल नहीं किया है तो डिफ़ॉल्ट मानों को कैसे लोड किया जाता है? सबसे भ्रामक पार्स के बारे में एक भ्रमित विवरण कैसे पता लगाया जा सकता है कि जब एक विंडोज़ फार्म कम किया जा रहा है? ऐप फोर्स स्टॉप के बाद जीसीएम पुश अधिसूचना काम करता है? एसक्यूएल का चयन करके एक स्तंभ को छोड़कर तालिका ए से? उपयोगकर्ता का वर्तमान स्थान / समन्वय प्राप्त करें कैसे हेक्साडेसिमल और दशमलव में सी # के बीच कन्वर्ट करने के लिए? गतिशील रूप से ui-sref Angularjs का मान सेट करें एजेक्स कॉल से डेटा के साथ कोणीय 2 बूटस्ट्रैप क्या जावा में स्वैप विधि लिखना संभव है? क्या मैं प्रतिबिंब के साथ एक संपत्ति मूल्य निर्धारित कर सकता हूँ? विंडोज फोन 8 एमुलेटर त्रुटि – स्विच बनाते समय कुछ हुआ कैसे jQuery के साथ सभी आईडी प्राप्त करने के लिए? एचटीटीपी एंड्रॉइड एचटीटीपीआरएल कनेक्शन का इस्तेमाल करना आप बिल्डर पैटर्न का उपयोग कब करेंगे?

एक्सप्रेस 4.0 के साथ फ़ाइल अपलोडिंग: req.files अपरिभाषित

मैं एक्सप्रेस 4.0 के साथ काम कर रहे एक सरल फ़ाइल अपलोड तंत्र प्राप्त करने का प्रयास कर रहा हूं, लेकिन मैं app.post बॉडी में req.files लिए undefined रखता हूं। यहां प्रासंगिक कोड है:

 var bodyParser = require('body-parser'); var methodOverride = require('method-override'); //... app.use(bodyParser({ uploadDir: path.join(__dirname, 'files'), keepExtensions: true })); app.use(methodOverride()); //... app.post('/fileupload', function (req, res) { console.log(req.files); res.send('ok'); }); 

.. और साथ जेड कोड:

 form(name="uploader", action="/fileupload", method="post", enctype="multipart/form-data") input(type="file", name="file", id="file") input(type="submit", value="Upload") 

उपाय
नीचे एमएससीडीएक्स द्वारा प्रतिक्रिया के लिए धन्यवाद, मैं bodyParser बजाय busboy का उपयोग करने के लिए स्विचित किया है:

 var fs = require('fs'); var busboy = require('connect-busboy'); //... app.use(busboy()); //... app.post('/fileupload', function(req, res) { var fstream; req.pipe(req.busboy); req.busboy.on('file', function (fieldname, file, filename) { console.log("Uploading: " + filename); fstream = fs.createWriteStream(__dirname + '/files/' + filename); file.pipe(fstream); fstream.on('close', function () { res.redirect('back'); }); }); }); 

वेब के समाधान से एकत्रित समाधान "एक्सप्रेस 4.0 के साथ फ़ाइल अपलोडिंग: req.files अपरिभाषित"

body-parser मॉड्यूल केवल JSON और urlencoded प्रपत्र प्रस्तुतियां हैंडल करते हैं, नहीं multipart (जो कि यदि आप फ़ाइलें अपलोड कर रहे हैं तो मामला होगा)

मल्टीपार्ट के लिए, आपको कुछ connect-busboy multer या multer या connect-multiparty (बहुपक्षीय / दुर्जेय है जो मूल रूप से एक्सप्रेस बॉडी पार्सर मिडलवेयर में उपयोग किया गया था) का उपयोग करना होगा। इसके अलावा एफडब्ल्यूआईडब्लू, मैं बसू के शीर्ष पर एक उच्च स्तर की परत पर काम कर रहा हूं जिसे reformed । यह एक एक्सप्रेस मिडलवेयर के साथ आता है और इसे अलग से उपयोग किया जा सकता है

ऐसा लगता है कि body-parser ने एक्सप्रेस 3 में अपलोड करने वाली फाइलों का समर्थन किया था, लेकिन समर्थन 4 के लिए छोड़ दिया गया था जब अब इसमें शामिल नहीं निर्भरता के रूप में कनेक्ट करें

एमएससीडीएक्स के जवाब में कुछ मॉड्यूलों की तलाश करने के बाद, मुझे पता चला कि express-busboy बसुबे एक बेहतर विकल्प था और ड्रॉप-इन प्रतिस्थापन के लिए निकटतम चीज़ थी। मैंने देखा कि केवल अंतर अपलोड किए गए फ़ाइल के गुणों में थे।

console.log(req.files) शरीर-पार्सर (एक्सप्रेस 3) आउटपुट का उपयोग कर एक ऐसा ऑब्जेक्ट जो इस तरह दिखता है:

 { file: { fieldName: 'file', originalFilename: '360px-Cute_Monkey_cropped.jpg', name: '360px-Cute_Monkey_cropped.jpg' path: 'uploads/6323-16v7rc.jpg', type: 'image/jpeg', headers: { 'content-disposition': 'form-data; name="file"; filename="360px-Cute_Monkey_cropped.jpg"', 'content-type': 'image/jpeg' }, ws: WriteStream { /* ... */ }, size: 48614 } } 

एक्सप्रेस- console.log(req.files) (एक्सप्रेस 4) का उपयोग कर console.log(req.files) की तुलना में:

 { file: { field: 'file', filename: '360px-Cute_Monkey_cropped.jpg', file: 'uploads/9749a8b6-f9cc-40a9-86f1-337a46e16e44/file/360px-Cute_Monkey_cropped.jpg', mimetype: 'image/jpeg', encoding: '7bit', truncated: false uuid: '9749a8b6-f9cc-40a9-86f1-337a46e16e44' } } 

यहाँ मैं जो चारों ओर googling पाया है:

 var fileupload = require("express-fileupload"); 

जो अपलोड के लिए बहुत आसान तंत्र है

 app.post("/upload", function(req, res) { var file; if(!req.files) { res.send("File was not found"); return; } file = req.files.FormFieldName; // here is the field name of the form file.mv("file.txt", function(err) //Obvious Move function { // log your error }); res.send("File Uploaded"); }); 

express-fileupload केवल मिडलवेयर जैसे दिखता है जो अभी भी इन दिनों काम करता है

एक ही उदाहरण के साथ, multer और connect-multiparty req.file या req.files के एक अनिर्धारित मान देता है, लेकिन express-fileupload कार्य करता है।

और req.file / req.files के रिक्त मूल्य के बारे में बहुत सारे सवाल और मुद्दों उठाए गए हैं