Déduplication des fichiers uploadés : référencer l'existant si même taille + même hash #35
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problème
Chaque upload crée une copie physique du fichier dans
data/{uuid}/files/, même si un fichier identique (même contenu) existe déjà dans un autre article. Résultat : espace disque gaspillé, fichiers dupliqués.Comportement attendu
Lors d'un upload, si un fichier de même hash SHA-256 et même taille existe déjà dans
data/*/files/, ne pas stocker de copie supplémentaire : référencer le fichier existant et supprimer le temporaire uploadé.Contexte technique
Images — naming déjà hash-based
addFile()danssrc/ArticleManager.phpgénère déjà{hash16}-{size}.{ext}pour les images. La détection d'un doublon se réduit à vérifier si ce nom existe dans un autre article :Pas de recalcul de hash nécessaire — le nom est la clé.
Fichiers non-image
Le nom est basé sur le nom d'origine (sanitisé), pas sur le hash. Options :
Approche suggérée
{hash}-{size}.ext, hard link si trouvé, fallbackcopy()si filesystems différents.Fichier concerné
app/src/ArticleManager.php— méthodeaddFile()(~ligne 776)Notes
Migré depuis varlog#49