koa上传图片
上传图片使用的是koa-body中间件,所以需要下载安装
建议去npm中查看koa-body的使用方法,
附上链接:https://www.npmjs.com/package/koa-body
接下来上代码,先是html,
<div class="form-group" style="height: 100px;">
<label class="col-sm-2 control-label no-padding-right" for="site_title">上传头像:</label>
<div class="col-sm-10">
<input type="file" accept="image/png,image/jpg" id="picUpload" name="file" multiple="multiple"/>
</div>
</div>
下面是后台代码:
router.post('/upload',async (ctx)=>{
//图片上传
const file = ctx.request.files.file
console.log(ctx.request.files)
// 创建可读流
const reader = fs.createReadStream(file. path);
let filePath = path.join(__dirname, '../../public/assets/avatars/') + `/${file.name}`;
// 创建可写流
const upStream = fs.createWriteStream(filePath);
reader.pipe(upStream);
return ctx.body = "上传成功!";
})
使用koa-body上传图片就完成了。
注意:
这里面有些坑,假入你的项目中同时使用了koa-body跟koa-bodyParser插件,那么有可能会产生冲突,出现请求发送失败的问题。我就有遇到这个坑,当我退出登陆时,第二次无法登陆进去,请求无法发送,在浏览器控制台出现Provisional headers are shown。
解决方法:koa-body可以代替koa-bodyParser,因此不使用koa-bodyParser即可。