koa-body的基本使用

1.首先安装该中间件

Npm install koa-body –save

Save 的意思是指在该目录下安装模块
2.引入模块 var body = require(‘koa-body’);
3.配置中间件 app.use(body({
Multipart:true, //这里补充一点,如果不加multipart:true ctx.request.body会获取不到值
Formidable:{

maxFileSize:20010241024}
}))
App.js 中的就配置完毕了,剩下的我们去到路由
4.在接收post请求中先获取请求的文件通过前端的name
Const file = ctx.request.files.file1 //我这里的file1是我前端的name值
Const reader = fs.createReadStream(file.path) //这里要引入文件操作模块跳到index.js最上面,也就是本文件的头部,加上 const fs = require(‘fs’)
通过英语意思可以知道这是创建可读取流,简单理解就是选取一个路径的文件让它可以被读取(可以引出的),这时文件早就已经被上传到了tmp/目录下,也就是我们的临时文件目录
我们继续创建一个路径,这时候要用到path模块,一样在文件的头部引用var path = require(‘path’);至于他是干什么的自行百度,继续,我们创建一个我们想要的路径来存放我们上传的文件(其实是将他从tmp目录下复制到这里,这里再提一下tmp目录中的临时文件是不会自行删除的,所以要定期删除),
Let filePath = path.join(__dirname,’…/upload’) + /${file.name};这句话的意思是创建一个文件,将一会我们要用的可写流写到这个这个目录的这个文件,后面那个是被特定的符号包裹着的变量,也就是我们文件的真正名字,__dirname是我们的目录目录的最前缀,目录最前面的东西,就是这个我们这个文件目录层级以上的目录前缀,
我们继续创建一个可写流顾名思义,可以被写入的流,const upstream = fs.createWriteStream(filepath)意思是这个目录的该文件可以被写入。
最后通过管道将可读流写入可写流
Reader.pipe(upstream);
这里是完整代码

router.post('/file',async (ctx) => {
	
	 // 上传单个文件 
	 const file = ctx.request.files.file1; 
	 console.log(file)
	 // 获取上传文件 
	 // 创建可读流 
	 const reader = fs.createReadStream(file.path); 
	 let filePath = path.join(__dirname, '../upload') + `/${file.name}`; 
	 // 创建可写流 
	 const upStream = fs.createWriteStream(filePath); 
	 // 可读流通过管道写入可写流 
	 reader.pipe(upStream); 
	 return ctx.body = "上传成功";

})

你可能感兴趣的:(koa-body的基本使用)