五、Koa2上传图片的实现
操作流程
安装
koa-body
替换koa-bodyparser
1
yarn add koa-body
设置中间件
1
2
3
4
5
6
7
8
9
10
11
12
13
14const koaBody = require('koa-body')
const path = require('path')
app.use(koaBody({
// 启用文件传输
multipart: true,
formidable: {
// 上传目录
uploadDir: path.join(__dirname, '/public/uploads'),
// 保留扩展名
keepExtensions: true
}
}))编写控制器
1
2
3
4
5
6
7
8
9
10class HomeCtl {
index (ctx) {
ctx.body = '<h1>这是主页</h1>'
}
upload (ctx) {
const file = ctx.request.files.file
ctx.body = { path: file.path }
}
}
module.exports = new HomeCtl()编写路由(接口)
1
2const { index, upload } = require('../controllers/home')
router.post('/upload', upload)使用
koa-static
设置设置静态目录安装插件
1
yarn add koa-static
使用
1
2
3const koaStatic = require('koa-static')
// 静态文件
app.use(koaStatic(path.join(__dirname, 'public')))修改接口返回网络地址
1
2
3
4
5upload (ctx) {
const file = ctx.request.files.file
const baseName = path.basename(file.path)
ctx.body = { url: `${ctx.origin}/uploads/${baseName}` }
}
编写前端页面上传文件
同步表单
1
2
3
4<form action="/upload" enctype="multipart/form-data" method="post">
<input type="file" name="file" accept="image/png">
<button type="submit">提交</button>
</form>
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小康博客!
评论
TwikooWaline