Koa.js - Dosya Yükleme
Web uygulamalarının, dosya yüklemelerine izin verecek işlevselliği sağlaması gerekir. İstemcilerden nasıl dosya alıp sunucumuzda saklayabileceğimizi görelim.
Koa-body ara yazılımını istekleri ayrıştırmak için zaten kullandık. Bu ara yazılım, dosya yüklemelerini işlemek için de kullanılır. Dosyaları yüklememize ve ardından bu dosyaları Koa kullanarak kaydetmemize izin veren bir form oluşturalım. Önce adında bir şablon oluşturunfile_upload.pug aşağıdaki içeriklerle.
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")
Formunuzda yukarıdaki kodlama tipinin aynısını vermeniz gerektiğini unutmayın. Şimdi bu veriyi sunucumuzda ele alalım.
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);
Bunu çalıştırdığınızda aşağıdaki formu alırsınız.
Bunu gönderdiğinizde, konsolunuz aşağıdaki çıktıyı üretecektir.
Yüklenen dosyalar, yukarıdaki çıktıdaki yolda saklanır. Kullanarak istekteki dosyalara erişebilirsiniz.this.request.body.files ve bu istekteki alanlar tarafından this.request.body.fields.