दिलचस्प पोस्ट
एसवीजी उपयोग तत्व और: मंडराना शैली रेल 4 पर रूबी ऐप iframe में काम नहीं करता है एक सरणी में तीन तत्व ढूँढना जिसका योग किसी दिए गए नंबर के सबसे निकट है क्या फ्लेक्स / बायसन के लिए कोई विकल्प है जो 8-बिट एम्बेडेड सिस्टम पर प्रयोग करने योग्य है? मैं जावास्क्रिप्ट में एक तिथि तुलना कैसे करूं? AngularJS संसाधन वादा "संसाधन नहीं मिल सकता है।" त्रुटि जब url के अंत में "डॉट" होती है एचटीएमएल 5 (डेटिस्टिक) का उपयोग 'शामिल' दृष्टिकोण के साथ पूर्णतः करें, न केवल 'से शुरू होता है' आप उच्च श्रेणी के चार्ट चार्ट में प्रत्येक श्रेणी का रंग कैसे बदल सकते हैं? कोको उद्देश्य-सी वर्ग के काम में एक चर के सामने एक अंडरस्कोर कैसे होता है? जांचें कि क्या NSURL 404 रिटर्न करता है PHP स्क्रिप्ट से सीएसवी फ़ाइल कैसे बना और डाउनलोड करें? अजगर: एक शब्दकोश का उपयोग कर matplotlib का उपयोग कर एक बार छापें कैसे डेटाबेस में समवर्ती अद्यतन से निपटने के लिए? टैब नियंत्रण में बंद करें बटन

एक्सप्रेस 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'); }); }); }); 

Solutions Collecting From Web of "एक्सप्रेस 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 के रिक्त मूल्य के बारे में बहुत सारे सवाल और मुद्दों उठाए गए हैं