Koajs-file-uploading

提供:Dev Guides
移動先:案内検索

Koa.js-ファイルのアップロード

Webアプリケーションは、ファイルのアップロードを許可する機能を提供する必要があります。 クライアントからファイルを受信して​​サーバーに保存する方法を見てみましょう。

リクエストの解析には、すでにkoa-bodyミドルウェアを使用しています。 このミドルウェアは、ファイルのアップロードの処理にも使用されます。 ファイルをアップロードし、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 によってリクエスト内のフィールドにアクセスできます。