WindevExpert

Vidéo 37 • Médias & Fichiers

Synchronisation de
Données Binaires

Apprenez à synchroniser des photos et des PDF sans saturer votre base de données ni ralentir vos paquets JSON.

L'Erreur du "Tout-en-un"

Approche Novice (JSON)

Transformer l'image en texte Base64 et l'injecter dans le JSON.

DANGER : Le paquet JSON passe de 1 Ko à 7 Mo. La RAM du serveur explose.

Approche Expert (Découplage)

Le JSON ne contient que l'ID de l'image. Le fichier est envoyé séparément vers un Bucket Cloud (S3).

AVANTAGE : Le flux de données reste léger. Les fichiers sont servis par un CDN.

Laboratoire : Optimisation de l'Envoi

Application WinDev (Local)

Traitement Binaire...
Bucket : production-s3
product.json (Meta)
img_7f4d.jpg (Binaire)

La Recette de l'Expert

Étape 1 : Préparation Locale

On ne synchronise jamais l'original.
1. Compression (ex: WebP ou JPEG 70%).
2. Dédoublonnage (Calcul du Hash SHA-256). Si le fichier existe déjà sur le Cloud, on n'envoie rien.

Étape 2 : L'Envoi Différé

Le Worker envoie d'abord le JSON. Si le serveur répond "Image manquante", le Worker lance l'upload binaire en tâche de fond.

Gain d'Espace
5.2 Mo ➔ 140 Ko

(-97% de bande passante)

Code de Synchronisation Médias

// 1. Compression de l'image locale avant envoi
bufMiniature est un Buffer = dSauveImageJPEG(imgProduit, enMémoire, 70)

// 2. On prépare le JSON (Contient juste l'empreinte)
stMaVente.PhotoID = HashChaîne(HA_SHA_256, bufMiniature)

// 3. Envoi du JSON (Léger)
SI PostMetaToCloud(stMaVente) ALORS
    // 4. Envoi du BINAIRE vers le Bucket (S3/Azure)
    // On utilise un thread séparé pour ne pas bloquer l'UI
    ThreadExécute("UploadBinaire", threadNormal, Proc_UploadS3, bufMiniature)
FIN