Aller au contenu principal

Suivre la progression du téléchargement avec les abonnements

Après avoir téléchargé un fichier sur l’URL S3 pré-signée, la plateforme continue de le traiter de manière asynchrone.

Utilisez subscribeUserFeed pour recevoir des événements de téléchargement en temps réel au lieu de faire du polling.

Pour le schéma général des événements, voir Format d'événement d'abonnement.

Flux et Catégorie

Les événements de téléchargement sont transmis sur :

  • subscribeUserFeed

Ils utilisent :

  • category: "upload"

Noms des événements

Le traitement du téléchargement émet une séquence d'événements tels que :

  • uploadScanned
  • uploadTypeChecked
  • uploadConverting
  • uploadFlattened
  • uploadTagsParsed
  • uploadPdfMetaExtracted
  • uploadCompleted
  • uploadFailed

Contenu de l’événement de téléchargement

Les contenus des téléchargements utilisent cette structure de base :

{
"version": "1.0",
"eventId": "evt...",
"timestamp": "2026-04-24T10:38:36.822Z",
"level": "INFO",
"event": "uploadCompleted",
"category": "upload",
"groupId": null,
"userId": "usr...",
"requestId": null,
"batchId": null,
"error": null,
"data": {
"id": "tmp...",
"key": "upload/usr.../tmp....pdf",
"code": "UPLOADOK"
}
}

data.code conserve le code de traitement de bas niveau pendant la migration et la compatibilité.

Opération d’abonnement

subscription SubscribeUserFeed {
subscribeUserFeed {
userId
data
}
}

Exemple JavaScript

const parseEnvelope = (payload) => {
const raw = payload?.data;
if (!raw) return null;
return typeof raw === 'string' ? JSON.parse(raw) : raw;
};

const handleUserFeed = ({ data }) => {
const wrapper = data?.subscribeUserFeed;
const event = parseEnvelope(wrapper);

if (event?.category !== 'upload') return;

switch (event.event) {
case 'uploadCompleted':
console.log('upload complete', event.data.id, event.data.key);
break;
case 'uploadFailed':
console.error('upload failed', event.data.code, event.data.key);
break;
default:
console.log('upload progress', event.event, event.data.code);
}
};

Quand l’utiliser

Cela est le plus utile lorsque vous souhaitez :

  • afficher un tiroir de progression ou une timeline de statut de téléchargement
  • détecter les échecs de validation asynchrone après la réussite du PUT S3
  • réagir immédiatement lorsqu’un modèle ou un asset téléchargé est prêt