From ec6071786db7bb054f371e08366186e757800d7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguy=E1=BB=85n=20Th=C3=A0nh=20Trung?= Date: Mon, 20 Apr 2026 00:46:29 +0700 Subject: [PATCH] fix(upload): use fetch for FormData file uploads to resolve Node HTTP chunk errors --- src/client.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/client.ts b/src/client.ts index 96406c3..6a14ee3 100644 --- a/src/client.ts +++ b/src/client.ts @@ -998,16 +998,21 @@ export class OverleafClient { formData.append('type', mimeType); formData.append('qqfile', new Blob([content]), baseName); - const response = await this.httpRequest(`${this.uploadUrl(projectId)}?folder_id=${encodeURIComponent(fid)}`, { + const res = await fetch(`${this.uploadUrl(projectId)}?folder_id=${encodeURIComponent(fid)}`, { method: 'POST', headers: { 'Cookie': this.getCookieHeader(), 'User-Agent': USER_AGENT, 'X-Csrf-Token': this.csrf }, - body: formData as unknown as Buffer, - expect: 'text' + body: formData as any }); + const text = await res.text(); + let setCookie: string[] = []; + if (res.headers && typeof res.headers.getSetCookie === 'function') { + setCookie = res.headers.getSetCookie(); + } + const response = { ok: res.ok, status: res.status, body: text, headers: { 'set-cookie': setCookie } }; if (!response.ok) { const text = response.body as string;