ZIP d'un téléchargement interrompu

Un téléchargement qui s'est arrêté trop tôt ne mélange pas un ZIP — il le tronque. L'index situé en fin de fichier (le répertoire central) n'est jamais arrivé, si bien que les extracteurs rejettent l'archive entière alors même que les fichiers enregistrés avant sont toujours là. Récupérer ces fichiers revient à lire le ZIP depuis le début, et cela n'exige pas de le confier à un serveur.

Votre fichier ne quitte jamais votre appareil — la réparation s'exécute dans votre navigateur. 0 octet téléversé.

Your data is the big block — usually intact. What breaks is the small index. Repair rebuilds it.

Drop a file here or browseTap to choose a file

ZIP · Office · PDF · video · JPG · PNG · RAR/7z · SQLite — repaired right here in your browser. Nothing is uploaded

0 bytes uploadedFree: 3 repairs/day — up to 500 MB video, 100 MB docs & archives, 50 MB photos. Free download. Single repair €5.90. No account required.

Réparer maintenant

  1. Déposez le fichier
  2. La réparation s'exécute en local
  3. Téléchargez le résultat

Quand un téléchargement du navigateur, un « tout télécharger » du cloud, ou une copie sur une connexion instable s'arrête avant le dernier octet, le .zip qui atterrit sur votre disque est tronqué — plus court que ce que le serveur prévoyait. WinRAR et 7-Zip disent "Unexpected end of archive", le unzip d'Info-ZIP dit "End-of-central-directory signature not found", l'Explorateur Windows dit "The Compressed (zipped) Folder is invalid", et le zipfile de Python lève BadZipFile: File is not a zip file. Tous réagissent à la même chose : il manque l'index de l'archive, qui vit tout à la fin. Déposez le fichier partiel ci-dessus et l'outil ignore l'index absent et parcourt les entrées depuis le début dans votre navigateur, extrayant chaque fichier entièrement écrit avant la coupure — rien n'est téléversé.

Pourquoi un téléchargement interrompu casse un ZIP

Un ZIP s'écrit du début à la fin, mais se lit de la fin vers le début. Chaque fichier que vous avez ajouté est stocké sous forme d'entrée de fichier local — un en-tête qui commence par la signature PK\x03\x04, portant le nom, la méthode de compression (0 = stocké, 8 = deflate), puis les octets compressés —, mais l'index qui fait autorité sur l'emplacement de ces entrées est le répertoire central (enregistrements PK\x01\x02) écrit en dernier, juste avant l'enregistrement End Of Central Directory de 22 octets, PK\x05\x06. Un extracteur ouvre le fichier en se positionnant à la fin et en le parcourant vers l'arrière à la recherche de cette signature PK\x05\x06 — jusqu'à environ 65 557 octets en arrière, car l'enregistrement se termine par un champ de commentaire de longueur variable. Ce n'est qu'après avoir trouvé l'EOCD qu'il sait combien d'entrées l'archive contient et où commence chaque enregistrement du répertoire central.

Imaginez maintenant le téléchargement qui s'est arrêté à 70 %. Les octets qui ne sont jamais arrivés sont ceux écrits en dernier : le répertoire central et l'EOCD. L'extracteur se positionne à la fin, parcourt vers l'arrière, ne voit jamais PK\x05\x06 et abandonne avant de toucher un seul fichier. C'est là l'origine exacte du "End-of-central-directory signature not found" d'unzip, du "Unexpected end of archive" de 7-Zip et WinRAR, du "The Compressed (zipped) Folder is invalid" de l'Explorateur, et du "Unable to expand … (Error 2)" de l'Utilitaire d'archive de macOS. Aucun ne signifie que les fichiers enregistrés sont mélangés — ils signifient que la table des matières de la fin a disparu.

Les téléchargements interrompus y sont particulièrement sujets à cause de la façon dont beaucoup de ZIP sont générés. Une archive assemblée à la volée par un serveur — un « tout télécharger » d'un stockage cloud, le ZIP du code source d'un dépôt GitHub, un paquet d'export — part généralement en streaming : le bit 3 de l'indicateur d'usage général (0x0008) est activé, la taille compressée et le CRC-32 de chaque en-tête local sont laissés à zéro, et les vraies valeurs sont ajoutées après les données de l'entrée dans un descripteur de données (PK\x07\x08). Pour ces archives, le répertoire central est le seul endroit où les tailles sont garanties, si bien que perdre la fin est doublement dommageable pour un extracteur normal. Le fichier à moitié écrit que votre navigateur a laissé — un .crdownload de Chrome/Edge, un .part de Firefox, ou un .zip simplement plus court que le Content-Length de la réponse — contient encore chaque entrée complète jusqu'à la coupure et rien après.

Ce que le parcours vers l'avant récupère d'un ZIP partiel

Le sauvetage n'a nul besoin de l'index manquant, car dans un ZIP chaque entrée locale se décrit elle-même. Au lieu de se positionner à la fin, l'outil parcourt le fichier vers l'avant depuis le décalage 0, s'arrêtant à chaque en-tête local PK\x03\x04 qu'il rencontre, lisant le nom du fichier et la méthode de compression, puis décompressant le flux deflate qui suit. Deflate s'autotermine : un flux est une séquence de blocs et le bloc final porte un bit BFINAL mis à 1, de sorte que le décodeur peut trouver où se terminent les données d'une entrée même quand le champ de taille de l'en-tête local a été laissé à zéro par un écrivain en streaming. Quand le flux se termine proprement, l'outil enregistre un fichier récupéré, saute tout descripteur de données PK\x07\x08 final et continue jusqu'au PK\x03\x04 suivant. Cela s'exécute en TypeScript pur dans votre onglet — sans binaire unzip, sans rien transmettre.

Le résultat, c'est que chaque fichier entièrement écrit avant l'interruption revient, dans l'ordre, avec son nom et son chemin de dossier d'origine. Si le téléchargement est mort au milieu du quatrième de dix fichiers, vous obtenez les trois premiers intacts et un quatrième partiel ou abandonné ; les six qui ne sont jamais arrivés ne peuvent pas être inventés, mais ils n'ont jamais été l'objectif. Une entrée « stockée » (méthode 0, sans compression — courante pour des contenus déjà compressés comme des JPEG ou des MP4 placés à l'intérieur du ZIP) est encore plus simple à sauver : ses octets sont copiés tels quels jusqu'au point de troncature, si bien que même un gros fichier arrivé à moitié donne souvent un fragment initial exploitable plutôt que rien du tout.

La limite honnête : la fin manquante est perdue

Aucun outil ne peut restituer des octets qui ne sont jamais arrivés sur votre disque. Si la connexion a lâché à 70 %, les derniers 30 % des données compressées n'existent pas localement, et rien — ni cette page, ni la « Réparation » de WinRAR, ni une suite de récupération payante — ne peut les reconstruire. La seule vraie solution pour la fin manquante est de retélécharger l'archive depuis la source, idéalement avec un client qui prend en charge les requêtes de plage HTTP (range requests) pour qu'un transfert interrompu reprenne là où il s'est arrêté au lieu de repartir de zéro. Si le serveur a envoyé un ETag ou un Content-Length, comparer cette longueur à la taille de votre fichier partiel vous dit exactement ce qui manque réellement.

Quelques limites honnêtes. Un ZIP chiffré (un mot de passe défini à la compression, bit 0 de l'indicateur d'usage général) ne peut pas être parcouru sans le mot de passe, car les données de l'entrée sont du texte chiffré sans structure deflate à suivre. Une archive très volumineuse écrite au format ZIP64 conserve ses propres structures de fin — l'enregistrement EOCD ZIP64 (PK\x06\x06) et son localisateur (PK\x06\x07) — qui sont perdues avec la fin exactement comme l'EOCD classique, mais le parcours vers l'avant récupère les entrées locales quel que soit le format. Et un téléchargement si court que seul un fragment du tout premier en-tête local est arrivé n'a rien à parcourir. Tout ce qui se situe entre ces extrêmes est récupérable.

Comme toute l'opération se déroule dans votre navigateur, l'archive n'est jamais copiée sur un serveur juste pour regarder à l'intérieur — ce qui compte quand un paquet « tout télécharger » contient des documents fiscaux, des historiques de discussion exportés ou du code source privé. Vous pouvez ouvrir l'onglet Réseau, lancer la récupération et confirmer que pas un octet du fichier ne quitte votre machine.

Ce que cela peut et ne peut pas réparer

Peut réparer

  • Un ZIP dont le téléchargement a été interrompu, perdant le répertoire central et l'EOCD — les entrées écrites avant la coupure sont récupérées en parcourant les en-têtes locaux depuis le début
  • ZIP en streaming / générés par serveur (bit 3 de l'indicateur activé, tailles dans un descripteur de données PK\x07\x08) dont les flux deflate s'autoterminent sur le bit BFINAL
  • Fichiers de téléchargement partiel du navigateur (.crdownload de Chrome/Edge, .part de Firefox) qui contiennent les entrées complètes reçues jusqu'ici
  • Entrées « stockées » (non compressées) copiées telles quelles jusqu'au point de troncature, y compris un fragment initial exploitable du fichier qui était à cheval sur la coupure
  • Archives ZIP64 dont les structures EOCD de fin ont été perdues mais dont les entrées locales survivent

Ne peut pas réparer

  • Toute entrée dont les données compressées se trouvaient après le point de troncature — ces octets ne sont pas sur votre disque
  • Le seul fichier qui était à cheval sur la coupure, qui peut revenir partiel ou pas du tout
  • ZIP chiffrés / protégés par mot de passe quand le mot de passe n'est pas fourni (les données de l'entrée sont du texte chiffré)
  • Un téléchargement si court que seul un fragment du premier en-tête local est arrivé
  • Le CRC-32 et les tailles d'origine exacts des entrées dont le descripteur de données et les enregistrements du répertoire central étaient dans la fin manquante

Si une réparation échoue, nous vous expliquons pourquoi (données manquantes ou structure endommagée), et vous n'êtes jamais facturé pour une réparation échouée.

Questions fréquentes

Pourquoi mon ZIP dit-il "unexpected end of archive" juste après le téléchargement ?

Parce que le téléchargement a été interrompu avant l'arrivée des derniers octets. Un ZIP garde son index — le répertoire central et l'enregistrement End Of Central Directory — tout à la fin du fichier, et cette fin est justement ce que perd un transfert coupé. Les fichiers enregistrés plus tôt dans le ZIP sont généralement intacts ; l'extracteur ne trouve simplement pas la table des matières qui lui dit qu'ils existent.

Puis-je récupérer les fichiers sans tout retélécharger ?

Souvent, oui — chaque fichier qui a fini d'arriver avant l'interruption. L'outil parcourt vers l'avant à la recherche de chaque en-tête de fichier local (PK\x03\x04) et décompresse l'entrée, si bien qu'une archive arrivée à moitié livre quand même ses fichiers complets. Ce qu'il ne peut pas restituer, c'est tout fichier dont les données venaient après la coupure ; pour ceux-là, il faut bel et bien retélécharger.

Mon navigateur a laissé un fichier .crdownload ou .part. Est-il récupérable ?

Il peut l'être. Un .crdownload (Chrome/Edge) ou un .part (Firefox) n'est rien d'autre que les octets partiellement téléchargés sous un nom temporaire. Déposez-le ici tel quel (ou renommez une copie en .zip) et le parcours vers l'avant extrait les entrées complètes qu'il contient. Il ne contiendra pas les fichiers qui n'ont jamais été téléchargés.

Ne devrais-je pas simplement le retélécharger ?

Si vous le pouvez, oui — un téléchargement neuf et complet est toujours la solution la plus propre, et un client qui prend en charge les requêtes de plage HTTP (range requests) peut souvent reprendre le transfert interrompu au lieu de repartir de zéro. La récupération est faite pour quand la source a disparu, est lente ou limitée en débit, ou quand vous n'avez besoin que des fichiers déjà arrivés plutôt que de tout le paquet.

Récupérer le ZIP l'envoie-t-il quelque part ?

Non. Le fichier est lu depuis votre disque et parcouru dans l'onglet de votre navigateur ; le lecteur est du TypeScript pur et rien n'est transmis. Vous pouvez ouvrir l'onglet Réseau et confirmer que pas un octet ne sort — utile quand un paquet « tout télécharger » contient des documents que vous préféreriez ne pas confier au serveur d'un inconnu.

Associés : Réparer une archive ZIP · "Unexpected end of archive" (ZIP/RAR/7z) · "Compressed folder is invalid" · Vérifier que rien n'est téléversé