Bonjour, voila j'ai un script d'upload d'image. Je voudrait savoir comment a l'upload avec un code php renommer l'image avec un nom aléatoire ( exemple image.jpg en iohqsiehfqzlmuidghq57847sz.jpg )
merci d'avance
loic7605
if(!isset($erreur))
{
     $fichier = strtr($fichier, 
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier))
     {
          echo 'Upload effectué avec succès !';
		  echo 'http://monsite.net/upload/'.$fichier.'';
     }
     else
     {
          echo 'Echec de l \'upload !';
     }
}
else
{
     echo $erreur;
}
?>


désolé mais je n'arrive pas a voir ou est ce que je pourait intergrer se code Smiley ohwell avec rename()
Il n'est pas utile de faire appel à rename(), ici. Il te suffit de remplacer le nom du fichier contenu dans $fichier, en préservant l'extension, par uniqid() (qui est une fonction générant 13 caractères hexadécimaux).
donc si j'ai bien suivi c'est donc par ici que cela va se passer ???


$fichier = basename($_FILES['avatar']['name']);
Oui, par exemple. Mais du coup tu n'as plus besoin des lignes suivantes :
$fichier = strtr($fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
... puisque tu sais que le nom ne comportera que des caractères hexadécimaux. Smiley cligne

Attention cela dit à stocker uniqid() dans une variable pour pouvoir utiliser le même identifiant plusieurs fois ! Sinon, un nouvel identifiant sera généré à chaque fois : par exemple pour le nom du fichier, puis quand tu vas vouloir affiché "Le fichier fichier.ext a bien été uploadé.", etc.
Modifié par phpdoesnotcare (05 May 2010 - 01:11)
if(!isset($erreur))
{

     $fichier = id_unique($nb_char)
	srand( (double)microtime()*rand(1000000,9999999) ); // Genere un nombre aléatoire
	$arrChar = array(); // Nouveau tableau contenant tous les caractères A-Za-z0-9
	for( $i=65; $i<90; $i++ ) {
	    array_push( $arrChar, chr($i) ); // Ajoute A-Z au tableau
	    array_push( $arrChar, strtolower( chr( $i ) ) ); // Ajouter a-z au tableau
	}
	for( $i=48; $i<57; $i++ ) {
	    array_push( $arrChar, chr( $i ) ); // Ajoute 0-9 au tableau
	}
	for( $i=0; $i< $nb_char; $i++ ) {
	    $id_unique .= $arrChar[rand( 0, count( $arrChar ) )]; // Ecrit un aléatoire
	}
	return $id_unique;
}
	 ;
     if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier))
     {
          echo 'Upload effectué avec succès !';
		  echo 'http://www.monsite.net.net/upload/'.$fichier.'';
     }
     else
     {
          echo 'Echec de l \'upload !';
     }
}
else
{
     echo $erreur;
}
?>



j'obtient une erreur Parse error: syntax error, unexpected T_STRING in /home/iphone4gpro/www/upload.php on line 21

je ne voit pas d'ou cela peut provenir ... une idée ??,
la ligne 21 c'est srand( (double)microtime()*rand(1000000,9999999) ); // Genere un nombre aléatoire
Modifié par Loic7605 (05 May 2010 - 01:20)