Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dominhhai/koa-busboy
Upload files with Busboy
https://github.com/dominhhai/koa-busboy
busboy koa-busboy koa-middleware koa2 middleware multipart upload-file
Last synced: about 1 month ago
JSON representation
Upload files with Busboy
- Host: GitHub
- URL: https://github.com/dominhhai/koa-busboy
- Owner: dominhhai
- License: mit
- Created: 2017-04-23T10:43:46.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2023-06-10T05:40:44.000Z (over 1 year ago)
- Last Synced: 2024-10-31T08:52:20.214Z (about 1 month ago)
- Topics: busboy, koa-busboy, koa-middleware, koa2, middleware, multipart, upload-file
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/koa-busboy
- Size: 11.7 KB
- Stars: 32
- Watchers: 2
- Forks: 5
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-koa - koa-busboy - 处理 koa v2 的 multipart/form-data 数据。 ![](https://img.shields.io/github/stars/dominhhai/koa-busboy.svg?style=social&label=Star) ![](https://img.shields.io/npm/dm/koa-busboy.svg?style=flat-square) (仓库 / 中间件)
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:
```javascript
const busboy = require('koa-busboy')
const uploader = busboy(options)
```While, `options` is same as original [busboy](https://github.com/mscdex/busboy#api) 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](https://www.iana.org/assignments/media-types/media-types.xhtml) that are accepted, default is to accept all.
### Example
```javascript
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]
})
```