Koa Busboy Save

Upload files with Busboy

Project README

koa-busboy

A koa's middleware for handling multipart form. Note that, this middleware supports Koa v2 only.

Installation

$ npm i -S koa-busboy

Usage

koa-busboy will adds all text fields to ctx.request.body object and uploaded files to ctx.request.files array.

To create middleware, simply call the module function with custom config options as following:

const busboy = require('koa-busboy')
const uploader = busboy(options)

While, options is same as original busboy module.

However, you can specify the following options also.

  • dest - string - The folder to save uploaded files (Default: system temp folder - os.tmpdir()).

  • fnDestFilename - function - The function that defines the final filename which saved on dest folder. The fnDestFilename(fieldname, filename) function will return the name of file which be saved on disk. While fieldname is your uploaded field's name and filename is your uploaded file's name. (Default: (fieldname, filename) => Date.now() + fieldname + filename)

  • acceptMimeTypes - Array - A list of mimetypes that are accepted, default is to accept all.

Example

const busboy = require('koa-busboy')
const koaRouter = require('koa-router')

const uploader = busboy({
  dest: './upload' // default is system temp folder (`os.tmpdir()`)
  fnDestFilename: (fieldname, filename) => uuid() + filename,
  acceptMimeTypes: ['image/gif', 'image/jpeg'] //only gif and jpeg files are uploded
})
const router = koaRouter()

router.post('/upload', uploader, async ctx => {
  // fields
  // text fields is add to ctx.request.body object
  let { name } = ctx.request.body
  // files
  // uploaded files is add to ctx.request.files array
  let fileReadStream = ctx.request.files[0]
})
Open Source Agenda is not affiliated with "Koa Busboy" Project. README Source: dominhhai/koa-busboy
Stars
29
Open Issues
7
Last Commit
11 months ago
License
MIT

Open Source Agenda Badge

Open Source Agenda Rating