koa文件上传

2019-10-09  本文已影响0人  Jonath

demo地址


使用 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我自己实现了文件的获取

上一篇 下一篇

猜你喜欢

热点阅读