दिलचस्प पोस्ट
बिना नई लाइन या अंतरिक्ष कैसे मुद्रित करें? ब्फार्ड पढ़ने के साथ एमडी 5 (या अन्य) हैश की गणना करने के लिए संभव है? libc ++ abi.dylib: प्रकार NSException (lldb) के बिना अपवाद के साथ समाप्त वसंत डेटा जेपीए में कस्टम विधि कैसे जोड़ें पायथन रिगेक्स में दोहराए जाने वाले उपपाठियों को कैप्चर करना जावास्क्रिप्ट में मैं एकाधिक विभाजक के साथ एक स्ट्रिंग कैसे विभाजित करूं? कैसे विधि संदर्भ (एक पूर्णांक के toString) पर अस्पष्ट प्रकार को ठीक करने के लिए? हैश कोड क्या है? क्या यह अद्वितीय है? सत्यापन कैसे दबाए बटन पर निर्भर करते हैं? जावास्क्रिप्ट की तारीख को कैसे प्रारूपित करें एक अल्पविराम-पृथक सूची में कॉलम मानों को सम्मिलित करना कैसे विंडोज डेस्कटॉप, सी # पर सीधे आकर्षित करने के लिए? अवरोही पदों में पोस्ट पोस्ट करें जेपीए द्वारा जारी एसक्यूएल प्रश्नों को कैसे देखें? मैं खिड़कियों के अनुप्रयोग में एक स्क्रीनशॉट कैसे ले सकता हूं?

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