2009-11-15 8 views
0

Je travaille sur un site php dans lequel nous devons télécharger des images d'utilisateurs.je dois renommer ce fichier pour éviter les conflits dans le nom de l'image.Générer des noms uniques?

uniqid(rand(), true); 
and adding a large random number after it. 

Cela fonctionnera-t-il parfaitement? Aucune suggestion..??

Sa génération sur des noms uniques pour l'image .....

Répondre

8

Fonction tempnam() crée un fichier avec un nom unique.

0

Vous pouvez utiliser Base36 sur la valeur AutoIncrement à partir d'une table SQL (en espérant que do utiliser une table SQL).

$filename = base_convert($last_insert_id, 10, 36); 
0

Vous avez deux approches en fonction de « comment » grand peut être votre bibliothèque d'images: 1. pour un montant non important des fichiers que je fais cela

<?php 

$file = sanitize_file($file); // remove all no [az-09_] characters for safe url linking; 
$file_md5 = $md5($file); 
$file_extention = $md5($file); 

// since I assume the file should belongs to someone you can do this 
$file_name = $user_id . $file_md5 . $file_extension; 

// then save the file 

?> 
  1. option .... CacheMogul. Ici, vous devez utiliser votre imagination. mais pour une grande quantité de fichiers cela fait un bon sharding donc vous n'avez pas besoin de vous soucier de la quantité ou de la taille maximale d'un dossier
1

Prenez un fichier md5 du fichier et utilisez-le. IIRC, les chances d'une collision sont de 1 sur 64M. Si cela ne suffit pas, préfixez-le avec l'horodatage exprimé en secondes ou en millisecondes. De cette façon, même si un fichier md5 en double est généré, les fichiers doivent entrer pendant la même seconde/milliseconde pour une collision.

Questions connexes