美文网首页
koa文件上传

koa文件上传

作者: Jonath | 来源:发表于2019-10-09 17:10 被阅读0次

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

    相关文章

      网友评论

          本文标题:koa文件上传

          本文链接:https://www.haomeiwen.com/subject/dovgpctx.html