使用koa-body
安装依赖
npm install koa-body --save
在app.js中使用
const koaBody = require('koa-body');
app.use(koaBody({
multipart: true,
formidable: {
maxFileSize: 200*1024*1024 // 设置上传文件大小最大限制,默认2M
}
}));
文件上传方法
//需要fs和path
const fs = require('fs');
const path = require('path');
router.post('/uploadPic', async (ctx, next) => {
const file = ctx.request.files.file; // 上传的文件在ctx.request.files.file
// 创建可读流
const reader = fs.createReadStream(file.path);
// 修改文件的名称
var myDate = new Date();
var newFilename = myDate.getTime()+'.'+file.name.split('.')[1];
var targetPath = path.join(__dirname, '../public/uploads/') + `/${newFilename}`;
//创建可写流
const upStream = fs.createWriteStream(targetPath);
// 可读流通过管道写入可写流
reader.pipe(upStream);
//返回保存的路径
return ctx.body = { code: 200, data: { url: 'http://' + ctx.headers.host + '/uploads/' + newFilename } };
});
如果不需要修改名称的话
// 创建可读流
const reader = fs.createReadStream(file.path);
var filePath= path.join(__dirname, '../public/uploads/') + `/${file.name}`;
//创建可写流
const upStream = fs.createWriteStream(filePath);
// 可读流通过管道写入可写流
reader.pipe(upStream);
../public/uploads/ 是文件保存的相对路径,可自行修改