let parts = this.ctx.multipart({ autoFields: true });let files = [];let stream;// field 能提前获取到值吗const field = parts.field
while ((stream = await parts()) != null) {// xxx}
ffscu2ro1#
想先对其他上传的字段做个验证 再决定接受是否上传的文件 stream模式下能做到吗?
flvlnr442#
await parts 就是一个个的拿的,但你验证后会做些啥?如果是为了中断请求节省资源,好像也提升不了多少。直接在前端校验 field 是不是更好一点?
kokeuurv3#
上传到s3的名字会拿field。比如version,type。接口不仅给前端使用,其他服务端可能集成在ci里。
wd2eg0qa4#
我的意思是,直接 file mode 存到临时文件后,一起处理也可以吧,你这里的原始需求是啥
edqdpe6u5#
Streams能做到file mode一样一起处理 的吗
hc8w905p6#
当然可以,file mode 底层就是 stream mode,你看下源码就知道了。只不过 stream 很麻烦,一不小心就容易泄漏导致 hangup,如果没有特殊的极致性能诉求,建议直接 file mode 省事
np8igboo7#
看了busboy的代码,好像能这样校验。
let parts = this.ctx.multipart({ autoFields: true, checkField: (name, value) => { if (name === '_csrf' && !checkCSRF(ctx, value)) { var err = new Error('invalid csrf token') err.status = 400 return err } } });
7条答案
按热度按时间ffscu2ro1#
想先对其他上传的字段做个验证 再决定接受是否上传的文件 stream模式下能做到吗?
flvlnr442#
await parts 就是一个个的拿的,但你验证后会做些啥?如果是为了中断请求节省资源,好像也提升不了多少。
直接在前端校验 field 是不是更好一点?
kokeuurv3#
await parts 就是一个个的拿的,但你验证后会做些啥?如果是为了中断请求节省资源,好像也提升不了多少。
直接在前端校验 field 是不是更好一点?
上传到s3的名字会拿field。比如version,type。接口不仅给前端使用,其他服务端可能集成在ci里。
wd2eg0qa4#
我的意思是,直接 file mode 存到临时文件后,一起处理也可以吧,你这里的原始需求是啥
edqdpe6u5#
我的意思是,直接 file mode 存到临时文件后,一起处理也可以吧,你这里的原始需求是啥
Streams能做到file mode一样一起处理 的吗
hc8w905p6#
当然可以,file mode 底层就是 stream mode,你看下源码就知道了。
只不过 stream 很麻烦,一不小心就容易泄漏导致 hangup,如果没有特殊的极致性能诉求,建议直接 file mode 省事
np8igboo7#
看了busboy的代码,好像能这样校验。