fix: 修复FormData Buffer转换问题
This commit is contained in:
parent
d12e831f93
commit
73690e7434
@ -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,
|
||||
});
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user