1、初始化仓库
yarn init -y
2、安装依赖
yarn add koa koa-router koa-body
3、配置index.js
koa-body可以使我们看到前面页面向服务器传入的值
ctx.request.body
ctx.request.files
const koa = require("koa")const router = require("koa-router")()const koaBody = require("koa-body")const app = new koa()router.post("/file",async ctx=>{console.log(ctx.request.files);ctx.body = '上传成功'})app.use(koaBody({multipart:true,formidable:{maxFileSize:200*1024*1024,//设置默认上传文件大小// 保留文件扩展名keepExtensions:true}}))app.use(router.routes())app.listen(5000,()=>{console.log('服务器打开了');})这里use的顺序很重要,koaBody必须要在router前面,不然会拿不到数据
<form action="http://localhost:5000/file" method="post" enctype="multipart/form-data"><input type="file" name="logo"><br><input type="submit"></form>这里的enctype属性很重要,不可以省略,不然也是会拿不到值Tips:表单上传文件 一定要加上enctype ="multipart/form-data"
4、需要将数据上传到服务器
# path.basename() 可以获取前文件名和扩展名const path = require("path")var file = 'c:/data/log.jpgconsole.log(path.basename(file))//logo.jpg
const koa = require("koa")const router = require("koa-router")()const koaBody = require("koa-body")const static = require("koa-static")const fs = require("fs")const path = require("path")const app = new koa()router.post("/file",async ctx=>{var file = ctx.request.files.logo.pathvar baseName = path.basename(file)console.log(baseName);// 1、创建一个可读流var reader = fs.createReadStream(file)// 2、设置上传图片的文件名var upFilePath = `./static/${baseName}`// 3、创建一个可写流var writer = fs.createWriteStream(upFilePath)// 4、可读流通过管道写入可写流reader.pipe(writer)ctx.body = '上传成功'})app.use(koaBody({multipart:true,formidable:{maxFileSize:200*1024*1024,//设置默认上传文件大小// 保留文件扩展名keepExtensions:true}}))app.use(static(path.join(__dirname,"static")))app.use(router.routes())app.listen(5000,()=>{console.log('服务器打开了');})
