koa-body 的基本使用
在 koa2 中使用 koa-body,我使用的是全局引入,而不是路由級(jí)別的引入,因?yàn)榭紤]到很多地方都有 post 請(qǐng)求或者是文件上傳請(qǐng)求,沒必要只在路由級(jí)別引入。
1、安裝依賴
npm i koa-body -S
2、index.js
const koaStatic = require('koa-static')
app.use(
bodyparser({
multipart: true, //允許文件上傳
formidable: {
uploadDir: path.join(__dirname, 'public/uploads/'), //文件上傳的路徑
keepExtensions: true //保留文件拓展名
}
})
)
控制器設(shè)計(jì)
upload(ctx) {
const basename = path.basename(ctx.request.files.file.path)
// ctx.origin 獲取 host value
ctx.body = { path: `${ctx.origin}/uploads/${basename}` }
}
路由設(shè)計(jì)
router.post('/upload', homeCtrl.upload)
前端頁面設(shè)計(jì)
<form action="/upload" enctype="multipart/form-data" method="POST">
<!-- 這里的name=‘file’是根據(jù)我們后端的代碼來設(shè)置的,
因?yàn)槲覀兒蠖双@取文件的代碼是ctx.request.files.file -->
<!-- accept 指定上傳文件的類型 -->
<!-- accept=“image/*”為所有圖片格式 -->
<input type="file" name="file" accept=".jpg,.png,.jepg" />
<input type="submit" value="上傳" />
</form>