web-dev-qa-db-fra.com

Meilleure méthode pour générer des noms de fichiers uniques lors du téléchargement de fichiers PHP

Quelqu'un peut-il suggérer la meilleure pratique pour générer des noms de fichiers uniques pour les téléchargements de fichiers afin d'éviter les entrées en double?

Merci d'avance.

25
Adamski

Je crée généralement un UID à l'aide de la fonction uniqid () pour le nom de fichier ou crée un dossier avec le nom du nom d'utilisateur qui télécharge le fichier et laisse le nom de fichier d'origine. L'inconvénient du premier est que vous devrez enregistrer le nom de fichier d'origine quelque part pour le montrer à l'utilisateur.

29
ryudice

Cette fonction peut aider:

http://php.net/manual/en/function.uniqid.php

Vous pouvez également envisager d'utiliser un hachage du contenu des fichiers tels que:

http://php.net/manual/en/function.sha1-file.php

6
Kevin Stock

Vous pouvez utiliser l'horodatage Unix du moment où le fichier a été téléchargé. Si vous vous attendez à ce que plusieurs téléchargements se produisent simultanément, vous pouvez ajouter un ID utilisateur unique ou une partie du nom de fichier d'origine.

5
Colin O'Dell

Quelque chose comme ça:

$filename = md5(date('Y-m-d H:i:s:u'));

Étant donné que les hachages MD5 ne sont pas garantis d'être uniques, c'est une bonne idée de vérifier les collisions en utilisant file_exists ($ filename). Dans ce cas, réexécutez ce qui précède.

5
cnizzardini

Il y a tempnam et tmpfile, si vous voulez créer des fichiers, ou cette question .

3
EboMike

$ username. $ timestamp. $ randomNumber

ou vous pouvez hacher ceci si vous ne voulez pas que les gens sachent quand ils ont été téléchargés et par qui

1
Freddie