Comment ajouter le téléversement de fichiers à votre application : stockage, limites et sécurité
Pour ajouter le téléversement de fichiers à votre application, stockez les fichiers dans un stockage d'objets (un compartiment), et non sur le disque de votre serveur ni dans votre base de données, et enregistrez un petit enregistrement dans la base avec la clé du fichier, son nom, sa taille, son type et son propriétaire. Vérifiez la taille et le type du fichier sur le serveur, décidez dès le départ si les fichiers sont publics (comme des photos de produits) ou privés (comme des factures), et ne servez les fichiers privés qu'après avoir vérifié qui demande. Dans un créateur d'applications IA, vous pouvez décrire la fonctionnalité de téléversement en une seule consigne; l'essentiel est de tester que les fichiers survivent à un redéploiement et que la mauvaise personne ne peut pas les ouvrir.
Décidez de quel type de téléversement vous avez besoin
Avant de construire, répondez à trois questions :
- Quels fichiers? Photos de profil, images de produits, PDF, tableurs, audio, vidéo. Cela détermine les limites de type et de taille.
- Qui peut les voir? Tout le monde (une galerie publique) ou seulement celui qui a téléversé et les administrateurs (contrats, documents d'identité, dossiers de clients).
- Que se passe-t-il après le téléversement? Simple stockage, aperçu, redimensionnement des images, ou lecture du contenu.
Les images publiques et les documents privés demandent des configurations différentes; réglez cela d'abord.
Où stocker les fichiers
| Option | Fonctionnement | Idéal pour | Points de vigilance |
|---|---|---|---|
| Stockage d'objets (compartiment) | Fichiers conservés dans un service conçu pour cela; votre base stocke une clé ou une URL | Presque toutes les applications | Les règles d'accès doivent être bien définies |
| Stockage fourni par la plateforme | Votre créateur d'applications ou votre hébergeur active un compartiment pour vous | Applications construites sur cette plateforme | Les limites et les tarifs suivent la plateforme |
| Disque du serveur | Fichiers écrits sur le système de fichiers du serveur d'application | Développement local seulement | Souvent effacé au redémarrage ou au redéploiement |
| Dans la base de données | Les octets des fichiers stockés dans une table | Presque jamais | Alourdit la base, ralentit les sauvegardes |
| Outil de téléversement tiers | Un service hébergé gère tout le processus | Médias lourds, transformations d'images | Un fournisseur, un compte et une facture de plus |
Pour la plupart des applications, un stockage d'objets plus un enregistrement dans la base est la bonne réponse. La ligne de la base est ce que votre application interroge (« afficher les documents de cet utilisateur »); le compartiment ne fait que contenir les octets.
Fichiers publics et fichiers privés
- Les fichiers publics (photos de produits, images de blogue, avatars) peuvent être servis depuis une URL publique. Quiconque a le lien peut les ouvrir, ce qui convient à ce type de contenu.
- Les fichiers privés (factures, contrats, documents médicaux ou d'identité, livrables de clients) ne doivent jamais avoir une URL publique devinable. Le serveur vérifie que l'utilisateur connecté en est propriétaire ou a la permission, puis soit il diffuse le fichier, soit il renvoie une URL signée, c'est-à-dire un lien qui ne fonctionne que pendant une courte durée.
Une erreur courante et grave consiste à stocker des fichiers privés dans un compartiment public avec des noms prévisibles. Quiconque devine /uploads/facture-102.pdf obtient la facture de quelqu'un d'autre.
Exemples de consignes
Téléversement d'images publiques :
Permets aux administrateurs de téléverser jusqu'à 5 photos par produit. Accepte JPG, PNG et WebP jusqu'à 5 Mo chacune. Enregistre les fichiers dans le stockage de fichiers, puis enregistre la clé, la taille et l'ordre de chaque fichier dans une table product_images, et affiche des vignettes avec un bouton de suppression. Valide le type et la taille sur le serveur, pas seulement dans le navigateur.
Téléversement de documents privés :
Ajoute une page Documents pour les clients connectés. Les clients peuvent téléverser des PDF jusqu'à 20 Mo. Les fichiers sont privés : stocke-les dans le stockage de fichiers, enregistre l'identifiant du propriétaire, le nom d'origine, la taille et la date de téléversement dans une table documents, et ne permets qu'au propriétaire et aux administrateurs de les télécharger. Les téléchargements passent par une route serveur qui vérifie la permission. Ne crée jamais d'URL publique pour ces fichiers.
Suivis utiles :
Affiche une barre de progression pendant le téléversement, et un message d'erreur clair si le fichier est trop volumineux ou du mauvais type.
Quand une ligne de document est supprimée, supprime aussi le fichier stocké.
Étape par étape
- Choisissez les types et les limites de taille pour chaque champ de téléversement. Soyez précis : « PDF jusqu'à 20 Mo », et non « documents ».
- Activez le stockage. Dans un créateur IA, demandez les téléversements et il configurera le stockage; ailleurs, créez un compartiment et ajoutez ses identifiants comme secrets côté serveur.
- Créez une table pour les enregistrements de fichiers : identifiant, propriétaire, clé de stockage, nom d'origine, type, taille, date de création.
- Construisez la route de téléversement sur le serveur : vérifiez que l'utilisateur est connecté, vérifiez le type et la taille, générez une clé de stockage sécuritaire (et non le nom de fichier de l'utilisateur), enregistrez le fichier, insérez l'enregistrement.
- Construisez le chemin de téléchargement ou d'affichage : URL publique pour les fichiers publics; route avec vérification de permission ou URL signée pour les fichiers privés.
- Construisez l'interface : sélecteur de fichier, glisser-déposer si utile, progression, aperçus, erreurs.
- Gérez les suppressions pour que retirer un enregistrement retire aussi le fichier stocké.
- Testez : téléversez, rechargez, redéployez ou publiez, et vérifiez que le fichier se charge toujours. Puis connectez-vous avec un autre utilisateur et essayez d'ouvrir le fichier privé du premier.
Erreurs courantes
- Écrire les téléversements sur le disque du serveur. Cela fonctionne en développement, puis les fichiers disparaissent après un redémarrage ou un redéploiement.
- Faire confiance aux vérifications du navigateur. L'attribut « accept » d'un champ de fichier n'est qu'une indication, pas une sécurité. Vérifiez le type et la taille sur le serveur.
- Utiliser le nom de fichier de l'utilisateur comme clé de stockage. Les noms entrent en collision et peuvent contenir des caractères bizarres. Générez une clé unique et conservez le nom d'origine séparément.
- Des compartiments publics pour des fichiers privés. Voir plus haut; c'est celle qui finit dans les nouvelles.
- Autoriser n'importe quel type de fichier. Des fichiers HTML ou SVG servis depuis votre domaine peuvent exécuter des scripts dans certaines configurations. N'acceptez que les types dont vous avez besoin.
- Aucune limite de taille. Un seul téléversement énorme peut épuiser votre espace de stockage ou faire échouer la requête par dépassement de délai.
- Des fichiers orphelins. Supprimer la ligne de la base sans le fichier remplit lentement un espace de stockage que vous payez.
- Oublier le mobile. Les photos de téléphone peuvent être volumineuses et dans des formats comme HEIC; décidez si vous les acceptez ou si vous les convertissez.
Liste de vérification
- Les fichiers vont dans un stockage d'objets, pas sur le disque du serveur ni dans la base
- Chaque fichier a un enregistrement avec propriétaire, clé, nom, type et taille
- Le type et la taille sont vérifiés sur le serveur
- Les clés de stockage sont générées, non tirées du nom de fichier
- Les fichiers privés ne sont servis qu'après une vérification de permission
- Un autre utilisateur ne peut pas ouvrir vos fichiers privés, même avec le lien
- Supprimer un enregistrement supprime le fichier
- Les fichiers se chargent toujours après publication ou redéploiement
- Les erreurs de téléversement sont affichées clairement, y compris sur téléphone
Le téléversement de fichiers dans Mythex
Mythex peut activer automatiquement le stockage de fichiers pour un projet lorsque votre application a besoin de téléversements, donc vous n'avez pas à configurer un compartiment à la main. Vous pouvez aussi taper /storage dans le clavardage. Il est disponible dans les forfaits Free et Pro, avec une limite de 1 Go sur Free, et vous pouvez en voir l'état sous Paramètres → Stockage.
La documentation précise que l'hébergement publié n'est pas un système de fichiers local durable; demandez donc à l'agent d'utiliser le stockage de la plateforme plutôt que d'enregistrer sur le disque. Le stockage des fichiers et leurs téléchargements sont payés à partir de votre solde de crédits, selon la taille et la quantité téléchargée; le forfait Pro paie la moitié du tarif Free. Consultez Stockage de fichiers dans la documentation.
Les téléversements vont généralement de pair avec une base de données pour les enregistrements de fichiers et une connexion pour les fichiers privés. Si vous construisez un espace où des clients échangent des documents, consultez comment créer un portail client, et parcourez la liste de contrôle de sécurité avant le lancement.
Questions
Où les fichiers téléversés doivent-ils être stockés?
Dans un stockage d'objets (un service conçu pour les fichiers, souvent appelé compartiment ou bucket), et non sur le disque du serveur de l'application ni dans la base de données. Conservez seulement la clé ou l'URL du fichier, ainsi que des détails comme le nom, la taille et le propriétaire, dans votre base de données.
Pourquoi mes fichiers téléversés disparaissent-ils après la publication ou le redéploiement?
La plupart des plateformes d'hébergement n'offrent pas de disque local durable : quand l'application redémarre ou est redéployée, les fichiers écrits sur son disque sont perdus. Enregistrez plutôt les fichiers téléversés dans un stockage d'objets.
Comment garder les fichiers téléversés privés?
Ne les rendez pas lisibles publiquement. Faites vérifier par votre serveur que l'utilisateur connecté a le droit de voir un fichier, puis envoyez-le ou renvoyez un lien signé de courte durée.
Mythex prend-il en charge le téléversement de fichiers?
Oui. Mythex peut activer le stockage de fichiers pour un projet lorsque l'application a besoin de téléversements, dans les forfaits Free et Pro, avec une limite de 1 Go sur Free. Vous demandez la fonctionnalité à l'agent ou tapez /storage.