现在的方式都是统一配置
exports.multipart = { fileSize: '10mb', mode: 'stream', };
如何实现不同的router限制不同的size? 尝试stream模式获取length不准,file模式下面file对象根本没有size属性。这个上传很多缺陷啊
现在的方式都是统一配置
exports.multipart = { fileSize: '10mb', mode: 'stream', };
如何实现不同的router限制不同的size? 尝试stream模式获取length不准,file模式下面file对象根本没有size属性。这个上传很多缺陷啊
app.router.get('/xx', app.middleware.multipart({ ... }), controller.xx.xx)
你指的是 ctx.request.files ? 可以自己调用 fs.stats
@atian25 这种方式会出现另外一个错误:
the multipart request can't be consumed twice
config.default.js:
exports.multipart = { fileSize: '10mb', mode: 'stream', };
router.js:
router.post('/xx', middleware.multipart({ fileSize: '1mb', mode: 'stream' }), controller.xx.xx)
你全局那个要配置 ignore 过滤掉对应的
@atian25 建议你试一试
看了下源码,记错了, app.middleware.multipart
是 filemode 的处理。
https://github.com/eggjs/egg-multipart/blob/master/app/extend/context.js#L198
应该直接 getFileStream({ limits })
就好了。晚点我写个 demo 看看。
感谢反馈,这里确实有 2 个问题:
limits
的取值不支持 1kb
这样的配置,只支持 1024 这样,要修复下我们内部一般前面都有个 nginx 挡着,也都尽量用 file 模式,所以没注意到这个问题。
@stoneWeb 重新安装依赖再试试