Merge pull request #519 from R0m1k3/1.1

Update file upload handling to use native Node.js FormData
This commit is contained in:
LogiFlow authored and GitHub committed 2025-11-04 16:09:04 +01:00
commit 47ebf2172a
1 file changed
+7 -7
+7 -7
View File
@@ -128,7 +128,6 @@ import { invoiceVerificationService } from "./invoiceVerification";
import { backupService } from "./backupService"; import { backupService } from "./backupService";
import { weatherService } from "./weatherService.js"; import { weatherService } from "./weatherService.js";
import fetch from "node-fetch"; import fetch from "node-fetch";
import FormData from "form-data";
export async function registerRoutes(app: Express): Promise<Server> { export async function registerRoutes(app: Express): Promise<Server> {
// Detect environment // Detect environment
@@ -820,7 +819,8 @@ export async function registerRoutes(app: Express): Promise<Server> {
fieldsCount: Object.keys(formDataFields).length fieldsCount: Object.keys(formDataFields).length
}); });
// Préparer le FormData pour l'envoi au webhook externe // Utiliser le FormData natif de Node.js (disponible depuis Node 18+)
const { FormData, File, Blob } = await import('node:buffer');
const formData = new FormData(); const formData = new FormData();
// Ajouter tous les champs du formData // Ajouter tous les champs du formData
@@ -829,10 +829,11 @@ export async function registerRoutes(app: Express): Promise<Server> {
// Reconstituer le fichier depuis base64 // Reconstituer le fichier depuis base64
const fileData = value as { base64: string; filename: string; contentType: string }; const fileData = value as { base64: string; filename: string; contentType: string };
const buffer = Buffer.from(fileData.base64, 'base64'); const buffer = Buffer.from(fileData.base64, 'base64');
formData.append('file', buffer, {
filename: fileData.filename, // Créer un Blob/File natif Node.js
contentType: fileData.contentType const blob = new Blob([buffer], { type: fileData.contentType });
}); const file = new File([blob], fileData.filename, { type: fileData.contentType });
formData.append('file', file);
} else { } else {
formData.append(key, value as string); formData.append(key, value as string);
} }
@@ -844,7 +845,6 @@ export async function registerRoutes(app: Express): Promise<Server> {
const response = await fetch(webhookUrl, { const response = await fetch(webhookUrl, {
method: 'POST', method: 'POST',
body: formData as any, body: formData as any,
headers: formData.getHeaders(),
signal: controller.signal signal: controller.signal
}); });