使用 koa-body 中间件获取上传的文件
koa-body 支持文件、json、form格式的请求体,安装 koa-body
yarn add koa-body
设置 koaBody 配置参数,index.js
const Koa = require("koa")
const koaBody = require("koa-body")
const route = require("./router")
const static = require("./static")
const path = require("path")
const app = new Koa()
app.use(
koaBody({
// 支持文件格式
multipart: true,
formidable: {
// 上传目录
uploadDir: path.join(__dirname, "static/uploads"),
// 保留文件扩展名
keepExtensions: true,
// 修改文件名
onFileBegin: (_, file) => {
file.path = file.path.replace(path.basename(file.path), file.name)
}
}
})
)
app.use(static)
app.use(route.routes(), route.allowedMethods())
app.listen(64723)
接下来完善 /upload 路由,获取文件,然后直接返回文件路径
const path = require("path")
const fs = require("fs")
const route = require("koa-router")()
route.post("/", ctx => {
// 上传的文件
const files = ctx.request.files
const body = {}
Object.keys(files).forEach(key => {
// 上传的文件
const file = files[key]
// 查看文件路径
body[key] = ctx.origin + "/uploads/" + path.basename(file.path)
})
ctx.body = body
})
module.exports = route
使用 Postman 测试
上传测试
本地磁盘上传的文件
如果想要查看上传的文件可以借助koa-static, 在此demo我自己实现了文件的获取
网友评论