在koa2中上传文件,接收formData格式
-
首先需要安装
koajs/multer
,前端需要将file
返回给后端const Koa = require('koa'); const Router = require('@koa/router'); // 只需要安装这一个yarn add @koa/multer multer const multer = require('@koa/multer'); const app = new Koa(); const router = new Router(); const upload = multer(); // note you can pass `multer` options here // add a route for uploading multiple files router.post( '/upload-multiple-files', upload.fields([ { name: 'avatar', maxCount: 1 }, { name: 'boop', maxCount: 2 } ]), ctx => { console.log('ctx.request.files', ctx.request.files); console.log('ctx.files', ctx.files); console.log('ctx.request.body', ctx.request.body); ctx.body = 'done'; } ); // add a route for uploading single files router.post( '/upload-single-file', upload.single('avatar'), ctx => { console.log('ctx.request.file', ctx.request.file); console.log('ctx.file', ctx.file); console.log('ctx.request.body', ctx.request.body); ctx.body = 'done'; } );
-
前端传递数据使用
formData
格式数据
- 后端接收并且,将接收的文件进行处理,上传到oss
-
解析传递过来的文件,上传到oss
oss配置
../config/index
oss: { accessKeyId: '', // 密钥ID accessKeySecret: '', // 密钥 bucket: '', // 存储空间名 region: '' // 存储空间所在地域 }
const OSS = require('ali-oss'); const { oss } = require('../config/index') const saveName = `/yuCloud/${Date.now()}_${ files.background[0].originalname }` // 位置/保存的文件名 const upLoad = await store.put(saveName, Buffer.from(files.background[0].buffer))
const multer = require('@koa/multer'); const upload = multer(); // 创建首页数据,前端创建了几个formData这里就需要添加几个 // 并且名称要对应 router.post('/create-home', upload.fields([ { name: 'background', maxCount: 1 }, { name: 'weather', maxCount: 1 }, { name: 'title', maxCount: 1 }, { name: 'content', maxCount: 1 }, ]), async (ctx, next) => { try { const body = ctx.request.body const files = ctx.request.files const saveName = `/yuCloud/${Date.now()}_${ files.background[0].originalname }` // 位置/保存的文件名 const upLoad = await store.put(saveName, Buffer.from(files.background[0].buffer)) console.log( upLoad) ctx.body = success('', '创建成功') } catch (e) { console.log(e) ctx.body = fail('创建失败') } })
-