diff --git a/app/api/enhance/route.ts b/app/api/enhance/route.ts index fca09efc2..bb1c99935 100644 --- a/app/api/enhance/route.ts +++ b/app/api/enhance/route.ts @@ -296,15 +296,32 @@ export async function POST(request: NextRequest) { const controller = new AbortController(); const timeoutId = setTimeout(() => controller.abort(), 60000); - // 将FormData转换为Buffer(form-data包是stream) + // 将FormData转换为Buffer(form-data包是stream,需要pipe或使用getBuffer) console.log("[Enhance API] 转换FormData为Buffer..."); const formDataBuffer = await new Promise((resolve, reject) => { const chunks: Buffer[] = []; - formData.on("data", (chunk: Buffer) => chunks.push(chunk)); - formData.on("end", () => resolve(Buffer.concat(chunks))); - formData.on("error", reject); + formData.on("data", (chunk: Buffer) => { + chunks.push(chunk); + }); + formData.on("end", () => { + console.log("[Enhance API] FormData stream结束,chunks数量:", chunks.length); + resolve(Buffer.concat(chunks)); + }); + formData.on("error", (error) => { + console.error("[Enhance API] FormData stream错误:", error); + reject(error); + }); + + // 重要:form-data包需要被pipe或手动触发才能开始流式传输 + // 使用PassThrough来触发stream + const { PassThrough } = require("stream"); + const passThrough = new PassThrough(); + passThrough.on("data", () => {}); // 忽略数据,我们已经在formData上监听 + formData.pipe(passThrough); }); + console.log("[Enhance API] FormData Buffer转换完成,大小:", formDataBuffer.length, "bytes"); + // 将Buffer转换为Uint8Array用于fetch(更兼容) const uint8Array = new Uint8Array(formDataBuffer);