From a6b65e75b8dce00b59af3005887d4d74efacb7b6 Mon Sep 17 00:00:00 2001 From: yizhi <946185759@qq.com> Date: Mon, 19 Sep 2022 16:50:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=A1=A8=E5=8D=95=E8=AF=BB?= =?UTF-8?q?=E5=8F=96=E6=97=B6=E5=87=BA=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- src/reader.ts | 29 +++++++++++++++++------------ 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index a358ed0..e761c86 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "yizhi-multipart-reader", - "version": "1.0.5", + "version": "1.0.6", "description": "", "main": "dist/index.js", "types": "typing/index.d.ts", diff --git a/src/reader.ts b/src/reader.ts index df81234..20ed67a 100644 --- a/src/reader.ts +++ b/src/reader.ts @@ -110,24 +110,29 @@ export class MultipartReader { //处理请求 #handleRequest(req: http.IncomingMessage) { + const onError = (err: Error) => { + this.#reject?.(err) + } + let old: Buffer | null = null //处理剩下的Buffer const dataReader = async (_data: Buffer) => { - //暂停读取 - req.pause() - //数据内容 - const data: Buffer = old ? Buffer.concat([old, _data]) : _data - old = await this.#parseData(data) - //触发一下监听过程 - this.#onReadCallback?.(this.#readed += _data.length) - //处理数据 - req.resume() + try { + //暂停读取 + req.pause() + //数据内容 + const data: Buffer = old ? Buffer.concat([old, _data]) : _data + old = await this.#parseData(data) + //触发一下监听过程 + this.#onReadCallback?.(this.#readed += _data.length) + //处理数据 + req.resume() + } catch (err) { + onError(err as any) + } if (this.#state == ReadState.finish) { this.#resolve?.({ files: this.#files, fields: this.#fields }) } } - const onError = (err: Error) => { - this.#reject?.(err) - } //事件处理 req.on('error', onError) req.on('data', dataReader)