最近有个上传并解析excel文件的需求,后端使用的是 koa2 框架,就去找了下,选用了好评如潮的 koa-body
插件来做上传功能,js-xlsx
用来处理解析excel , 参考:
https://segmentfault.com/a/1190000015943339
https://blog.csdn.net/qq_24078843/article/details/76419248
https://segmentfault.com/a/1190000004395728#articleHeader5
参照前人的经验,写好了demo,用 curl -X POST http://127.0.0.1:6666/upload -F 'file=@C:\Users\my\Desktop\1.xlsx' -b 1.txt
命令验证可以完美处理。
但是发现之前写的 DELETE
方法请求却出错了,用 ctx.request.body
无法接收到前端数据了,这接口我啥也没改呀,那就是在接口入口的公共部分出的问题了,由于引用了 koa-body ,在入口处新增了
app.use(koaBody({
multipart: true,
formidable: {
maxFileSize: 200*1024*1024 // 设置上传文件大小最大限制,默认2M
}
}));
想来就是这个的毛病了,到源码出处一看 https://github.com/dlau/koa-body,明确有配置说明
strict {Boolean} If enabled, don't parse GET, HEAD, DELETE requests, default true
GET, HEAD, DELETE
请求方法没有在 request.body
中定义,但是不排除在其他实例当中是支持的,因此,只需在原有配置上加上 strict : false
,如下:
app.use(koaBody({
multipart: true,
strict : false, //如果为true,不解析GET,HEAD,DELETE请求
formidable: {
maxFileSize: 200*1024*1024 // 设置上传文件大小最大限制,默认2M
}
}));
再重新运行,好了,对整体项目并没有影响了,因此,在使用一个新的插件的过程的时候,最好还是要去官网看看,毕竟,别人写的也只是解决自身问题的一部分用法,想要更全面的,还得去官网看。