fix: 修复FormData Buffer转换问题

This commit is contained in:
Your Name 2025-12-29 01:14:49 +08:00
parent d12e831f93
commit 73690e7434

View File

@ -256,21 +256,24 @@ export async function POST(request: NextRequest) {
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), 60000);
// 将FormData转换为ArrayBuffer(fetch需要)
const formDataBuffer = await new Promise<ArrayBuffer>((resolve, reject) => {
// 将FormData转换为Buffer(form-data包是stream)
const formDataBuffer = await new Promise<Buffer>((resolve, reject) => {
const chunks: Buffer[] = [];
formData.on("data", (chunk: Buffer) => chunks.push(chunk));
formData.on("end", () => {
const buffer = Buffer.concat(chunks);
resolve(buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength));
});
formData.on("end", () => resolve(Buffer.concat(chunks)));
formData.on("error", reject);
});
// 将Buffer转换为ArrayBuffer用于fetch
const arrayBuffer = formDataBuffer.buffer.slice(
formDataBuffer.byteOffset,
formDataBuffer.byteOffset + formDataBuffer.byteLength
);
response = await fetch(enhanceUrl, {
method: "POST",
headers,
body: formDataBuffer,
body: arrayBuffer,
signal: controller.signal,
});