Générateur de fichiers factices

Générez des fichiers factices d'une taille exacte en octets — images, audio, vidéo, PDF, texte, etc. — entièrement dans votre navigateur. Pratique pour tester les limites de taille des formulaires de téléversement. Les fichiers ne sont jamais envoyés à un serveur.

Format

Format Extension Type MIME Limite selon la spécification Remarque
Texte (TXT) .txt text/plain Pratiquement illimité Rempli avec du texte lisible répété
CSV .csv text/csv Pratiquement illimité Données de tableau factices avec ligne d'en-tête
JSON .json application/json Pratiquement illimité Rempli dans un seul champ de type chaîne
Binaire (BIN) .bin application/octet-stream Pratiquement illimité Octets arbitraires répétant de 0x00 à 0xFF
Image (PNG) .png image/png Pratiquement illimité Image 1x1 valide + chunk de remplissage
Audio (WAV) .wav audio/wav 4 GiB Données PCM silencieuses (réellement lisibles)
Vidéo (MP4) .mp4 video/mp4 Pratiquement illimité Enregistrement réel dans les navigateurs compatibles, factice à structure valide sinon
Vidéo (WebM) .webm video/webm Pratiquement illimité Animation de quelques secondes réellement enregistrée (navigateurs compatibles uniquement)
PDF .pdf application/pdf Pratiquement illimité PDF valide d'une page blanche
ZIP .zip application/zip 4 GiB Archive non compressée à entrée unique

Qu'est-ce qu'un générateur de fichiers factices ?

Lorsqu'on développe une fonction de téléversement, il faut vérifier que les limites de taille et les contrôles d'extension fonctionnent réellement comme prévu. Cela nécessite un fichier « exactement d'un nombre d'octets donné, tout en restant valide pour son format » — et ce genre de fichier n'est pas toujours facile à trouver sous la main. Cet outil génère du texte, des images, de l'audio, de la vidéo, des PDF, des archives ZIP et bien plus, chacun à la taille exacte demandée.

Chaque fichier généré est constitué de données valides conformes à la spécification de son format. De nombreux formats réservent des zones qu'un analyseur est autorisé à ignorer, et c'est précisément dans ces zones que l'outil ajoute du remplissage pour ajuster la taille, de sorte qu'aucune erreur ne survient à l'ouverture. Tout le traitement se déroule dans le navigateur, et rien n'est jamais envoyé à un serveur. À noter que WAV et ZIP sont plafonnés à 4 Go par leur spécification de format.

Comment générer un fichier factice

  1. Choisir un format de fichier Sélectionnez le format accepté par votre cible de test. Pour tester la validation de l'extension ou du type MIME, choisissez précisément ce format.
  2. Indiquer la taille Saisissez un nombre et une unité. Pour une limite de « 10 Mo », la frontière se déplace selon qu'on l'interprète comme 10 000 000 ou 10 485 760 octets.
  3. Définir le nom du fichier Vous pouvez inclure l'extension dans le nom choisi. Modifiez-le si vous souhaitez tester des règles de rejet basées sur le nom.
  4. Générer et télécharger Cliquez sur « Générer » pour créer le fichier. Les grandes tailles prennent plus de temps, et vous pouvez annuler à tout moment pendant la génération.

Astuces pour en tirer le meilleur parti

  • La logique de validation des formulaires de téléversement vérifie souvent séparément trois éléments : l'extension, le type MIME et la taille du fichier. Comme cet outil génère des fichiers valides à tous les autres égards, vous pouvez tester la limite de taille de manière isolée.
  • Une limite de « 10 Mo maximum » peut correspondre à 10 000 000 octets (106) selon une implémentation, ou à 10 485 760 octets (220) selon une autre. Le sélecteur d'unité vous permet de choisir les deux bases, afin de tester à la fois la valeur limite exacte et un octet au-delà.
  • Chrome et Edge diffusent les données directement vers le lecteur choisi, si bien que des fichiers de plusieurs dizaines de Go peuvent être générés sans solliciter la mémoire. Firefox et Safari assemblent d'abord le fichier en mémoire, ce qui impose une limite pratique à la taille.
  • Dans les navigateurs compatibles, la vidéo (MP4/WebM) est réellement enregistrée sous la forme de quelques secondes d'animation grâce à l'encodeur intégré du navigateur, si bien qu'elle se lit vraiment une fois ouverte. Tout le reste — le remplissage qui constitue l'essentiel du fichier, ainsi que le contenu des autres formats d'image et d'audio — est factice. L'objectif est uniquement de tester la validation de la taille, de l'extension et du type MIME.

Utilisations des fichiers factices

Tests aux valeurs limites des téléversements

Créez un fichier exactement à la limite et un autre un octet au-delà, puis testez les deux. Vous vérifiez ainsi si le message d'erreur apparaît exactement là où la spécification le prévoit.

Vérification des contrôles d'extension et de type MIME

Générez un format autorisé et un format interdit, puis soumettez les deux pour identifier lequel des deux critères provoque réellement le rejet.

Vérification du comportement lors de gros transferts

Avec des fichiers de plusieurs gigaoctets, vous pouvez vérifier que l'affichage de la progression, les délais d'expiration et la reprise après interruption fonctionnent correctement, sans avoir besoin de données réelles.

Estimation du stockage et de la bande passante

En déposant réellement un fichier de la taille prévue, vous pouvez mesurer concrètement la consommation de stockage et le temps de transfert.

Vocabulaire autour de la validation de fichiers

Type MIME
Une chaîne indiquant la nature d'un fichier, écrite par exemple image/png, couramment utilisée pour décider si un téléversement est autorisé.
Test aux valeurs limites
Une méthode de test qui vérifie le point exact d'une limite ainsi que les valeurs juste avant et juste après, car les anomalies s'y concentrent le plus souvent.
Remplissage
Des données sans signification ajoutées uniquement pour atteindre la taille visée. Elles sont placées dans des zones que le format autorise à ignorer, si bien que le fichier reste intact.
Go contre Gio
Un Gio correspond à 1 073 741 824 octets, tandis qu'un Go correspond à 1 000 000 000 octets. Cet écart est une cause fréquente de mauvaise interprétation des limites de taille.
Écriture en flux
Une méthode qui écrit les données vers leur destination petit à petit, ce qui permet de traiter même de très gros fichiers sans les charger entièrement en mémoire.

Questions fréquentes

Non. La génération se déroule entièrement dans votre navigateur, et le contenu n'est jamais envoyé à un serveur.

Oui : dans les navigateurs compatibles (Chrome, par exemple), l'encodeur intégré du navigateur enregistre réellement quelques secondes d'animation, si bien qu'elle se lit une fois ouverte. L'essentiel du fichier est constitué de remplissage ajouté pour atteindre la taille exacte. Le MP4 bascule automatiquement vers un fichier factice à structure valide dans les navigateurs qui ne prennent pas en charge l'enregistrement, si bien que la génération elle-même n'échoue jamais. Le WebM ne peut être sélectionné que dans les navigateurs prenant en charge l'enregistrement.

Parce que, dans ces deux formats, le champ qui enregistre la taille du fichier est fixé par la spécification à 32 bits (environ 4,29 Go maximum). Ce n'est pas une limitation de notre implémentation, mais une limite propre à la spécification du format elle-même.

TXT, CSV, JSON, BIN, PNG, PDF, MP4 et WebM n'ont aucune limite supérieure dans la spécification du format ; avec la dernière version de Chrome ou Edge (qui prend en charge l'écriture directe sur le disque), vous pouvez donc générer des fichiers extrêmement volumineux.
Tool-kun

Anecdote — La frontière entre un fichier « valide » et un fichier « corrompu »

La plupart des formats de fichier réservent des zones qu'un analyseur (parser) est explicitement autorisé à ignorer : les chunks inconnus du PNG, la boîte free du MP4 et l'élément Void du WebM en sont des exemples. Ces zones ont été conçues dès l'origine comme un espace réservé pour de futures extensions, que les analyseurs actuels doivent ignorer — les remplir n'endommage donc jamais le fichier.

Pour la vidéo, nous la rendons réellement lisible en plaçant de véritables images avant le remplissage. Écrire soi-même l'encodage bit à bit d'un codec est trop difficile à garantir comme correct ; nous laissons donc l'encodeur intégré du navigateur lui-même (l'API MediaRecorder) enregistrer quelques secondes d'une animation sur un canvas, puis nous ajoutons le remplissage ensuite. C'est une façon de concilier le principe « toujours renvoyer un fichier garanti valide » avec le souhait de l'utilisateur de « voir vraiment une vidéo ».

Fait intéressant, un fichier ZIP est conçu de sorte qu'il suffit de lire le « répertoire central » situé à la fin pour connaître la liste complète de son contenu. On dit que cela remonte à l'époque des bandes magnétiques, où l'on lisait à partir de la fin — et c'est encore aujourd'hui la raison pour laquelle on peut extraire très rapidement un seul fichier d'un ZIP volumineux.