什么是 Koa2?
Koa2 是一个基于 Node.js 平台的下一代 web 开发框架,它采用了 ES6 的语法并且使用了 async/await 这种更加优雅的异步处理方式。Koa2 的核心思想是中间件(middleware),通过组合不同的中间件来完成不同的功能。
什么是 koa-body?
koa-body 是 Koa2 中的一个中间件,用于解析 request body,支持多种格式的数据解析,包括 JSON、form、text 和文件上传等。
如何使用 koa-body 进行文件上传?
文件上传是 web 开发中常见的需求,使用 koa-body 中间件可以非常方便地实现文件上传功能。
首先需要安装 koa-body:
npm install koa-body --save
接下来,在 Koa2 应用中使用 koa-body 中间件:
const Koa = require('koa'); const koaBody = require('koa-body'); const app = new Koa(); app.use(koaBody({ multipart: true, // 支持文件上传 formidable: { uploadDir: './uploads', // 上传文件的目录 keepExtensions: true, // 保留文件扩展名 maxFileSize: 200 * 1024 * 1024 // 上传文件的最大大小为 200MB } })); app.listen(3000, () => { console.log('server is running at http://localhost:3000'); });
在上面的代码中,我们使用 koa-body 中间件,并设置 multipart 为 true,这样就可以支持文件上传了。同时,我们还设置了 formidable 配置项,指定了上传文件的目录、是否保留文件扩展名以及上传文件的最大大小。
接下来,我们可以在路由中处理文件上传的请求:
const Router = require('koa-router'); const fs = require('fs'); const router = new Router(); router.post('/upload', async (ctx, next) => { // 获取上传的文件 const file = ctx.request.files.file; // 读取文件流并保存到指定目录 const reader = fs.createReadStream(file.path); const filePath = `./uploads/${file.name}`; const writer = fs.createWriteStream(filePath); reader.pipe(writer); // 返回上传成功的信息 ctx.body = { code: 200, message: '上传成功' }; }); app.use(router.routes()).use(router.allowedMethods());
在路由中,我们首先获取上传的文件,然后通过 fs 模块读取文件流并保存到指定目录。最后,返回上传成功的信息。
总结
通过使用 koa-body 中间件,我们可以非常方便地实现文件上传功能。同时,我们还可以通过设置 formidable 配置项来控制上传文件的目录、是否保留文件扩展名以及上传文件的最大大小。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/658d0d03eb4cecbf2d2fb540