Koa.js - फ़ाइल अपलोड करना

वेब एप्लिकेशन को फ़ाइल अपलोड की अनुमति देने के लिए कार्यक्षमता प्रदान करने की आवश्यकता है। आइए देखें कि हम ग्राहकों से कैसे फाइल प्राप्त कर सकते हैं और उन्हें अपने सर्वर पर स्टोर कर सकते हैं।

हमने पहले ही कोस-बॉडी मिडलवेयर का उपयोग पार्सिंग अनुरोधों के लिए किया है। इस मिडलवेयर का उपयोग फ़ाइल अपलोड को संभालने के लिए भी किया जाता है। आइए एक ऐसा फ़ॉर्म बनाएं जो हमें फ़ाइलों को अपलोड करने की अनुमति देता है और फिर Koa का उपयोग करके इन फ़ाइलों को सहेज सकता है। सबसे पहले नाम से एक टेम्पलेट बनाएंfile_upload.pug निम्नलिखित सामग्री के साथ।

html
   head
      title File uploads
   body
      form(action = "/upload" method = "POST" enctype = "multipart/form-data")
         div
            input(type = "text" name = "name" placeholder = "Name")
         
         div
            input(type = "file" name = "image")
         
         div
            input(type = "submit")

ध्यान दें कि आपको अपने फ़ॉर्म में ऊपर की तरह ही एन्कोडिंग प्रकार देने की आवश्यकता है। अब हम अपने सर्वर पर इस डेटा को संभालते हैं।

var koa = require('koa');
var router = require('koa-router');
var bodyParser = require('koa-body');
var app = koa();

//Set up Pug
var Pug = require('koa-pug');
var pug = new Pug({
   viewPath: './views',
   basedir: './views',
   app: app 
});

//Set up body parsing middleware
app.use(bodyParser({
   formidable:{uploadDir: './uploads'},    //This is where the files would come
   multipart: true,
   urlencoded: true
}));

var _ = router(); //Instantiate the router

_.get('/files', renderForm);
_.post('/upload', handleForm);

function * renderForm(){
   this.render('file_upload');
}

function *handleForm(){
   console.log("Files: ", this.request.body.files);
   console.log("Fields: ", this.request.body.fields);
   this.body = "Received your data!"; //This is where the parsed request is stored
}

app.use(_.routes()); 
app.listen(3000);

जब आप इसे चलाते हैं, तो आपको निम्न फ़ॉर्म मिलते हैं।

जब आप इसे सबमिट करते हैं, तो आपका कंसोल निम्न आउटपुट का उत्पादन करेगा।

जो फ़ाइलें अपलोड की गई थीं, वे उपरोक्त आउटपुट में पथ में संग्रहीत हैं। आप का उपयोग कर अनुरोध में फ़ाइलों तक पहुँच सकते हैंthis.request.body.files और उस अनुरोध के क्षेत्र this.request.body.fields