Compter, renommer et uploader un fichier...

Petit nouveau ! | 7 Messages

23 mars 2008, 21:06

Salut !

Bon, ba pour mon premier post sur le forum, je vient vous demander une aide concernant un script php...
Je le dis franchement, PHP n'est pas (encore) mon domaine...
En fait, j'ai développé une application web en AS3 qui permet d'envoyer des fichiers dont l'extension est restreint, grâce à la méthode fileReference pour ceux qui connaissent :D

Donc, mon raisonnement serait le suivant :

1-Le client choisi le fichier à uploader
2-Le fichier est passé de mon application à un script PHP
3-Le script PHP compte le nombre de fichiers se trouvant dans le dossier
4-Il renome le fichier suivant la variable qui vaut le nombre de fichier +1
5-Il upload le fichier

Pour donner un peu plus d'infos, imaginons que dans mon dossier, se trouvent les fichiers "photo1.jpg" et "photo2.jpg"
Si bien que si le client upload, par exemple le fichier "maphoto.jpg", je désire que le script php le renomme en "photo3.jpg" :D

Voilà ou j'en suis dans le code :
<?php
$type = array ( 'jpg' ) ; // extension autoriser 
$uploaddir = 'images/' ; // repertoire de destination

if ($_FILES['Filedata'])
	{
		$extension_fichier = strtolower( array_pop( explode( ".", $_FILES['Filedata']['name'] ) ) ) ;
		
		// si cette extension ne se trouve pas dans notre tableau $type
		if( !in_array( $extension_fichier, $type ) ) exit; // on stop le traitement
			
		$uploadfile = $uploaddir . 'Photo'. strval(count(scandir($uploaddir))). '.jpg';
		
		if ( move_uploaded_file( $_FILES['Filedata']['tmp_name'], $uploadfile ) ) return true ; 
			
				else  return false ;
	} 
		else return false ;
?>
Mais malheureusement, ça ne fonctionne pas...

Si quelqu'un pouvait me filer un coup de main, ça ne serait pas de refus :D

D'avance, merci !

----------------------------------------------------------
EDIT :

Je viens de trouver un code sur le forum qui est porté sur ce que je recherche, mais malheureusement, j'ai beau l'insérer dans mon code actuel, je n'est aucun résultat sur le FTP...

Voici le code récupéré :
<?php
//... On commence par isoler le nom de son extension
$fichier = explode(".", $mon_fichier);
// On récupère le nom:
$nom_fichier = $fichier[0];
$ext = $fichier[1];
// on crée un pointeur :
$i = 1;
// On va partir du principe qu'on aura jamais plus de 20 fichiers du même nom
for($i = 1; $i <= 20; $i++)
{
    //On fait une concaténation et on vérifie si cette combinaison est disponible
    if(!file_exists($nom_fichier.$i.".".$ext))
    {
        // Le nom est disponible, on l'affecte à notre nouvelle variable
        $nouveau_fichier = $nom_fichier.$i.".".$ext;
        // On peut quitter la boucle
        break;
    }
    // Arrivé ici (else), la condition n'est pas bonne, le nouveau nom est utilisé, on reboucle
}
// On a maintenant un nom unique à attribuer avec $nouveau_ficher.
?> 

----------------------------------------------------------
EDIT :

Bon, j'ai fini par trouver par moi même en cherchant sur de nombreux forums 8-)
Le solution, pour ceux qui sont intéressés :
<?php
$type = array ( 'jpg' ) ; // extension autoriser 
$dossier = 'PhotosElevage/' ; // repertoire de destination
$nbPhotos = 0;
$tesvaleursretournees = "0";
$fd=opendir($dossier);
while ($fic=readdir($fd))
{
if (($fic!=".")&&($fic!=".."))
{
$tesvaleursretournees .= $fic . "&";
}
$nbPhotos +=1;
}
closedir($fd);
$nbPhotos -=1;

$fichier = 'Photo'.$nbPhotos.'.jpg';
if ($_FILES['Filedata'])
	{
		$extension_fichier = strtolower( array_pop( explode( ".", $_FILES['Filedata']['name'] ) ) ) ;
		
		// si cette extension ne se trouve pas dans notre tableau $type
		if( !in_array( $extension_fichier, $type ) ) exit; // on stop le traitement
		
		$destination = $dossier . $fichier;
		
		if ( move_uploaded_file( $_FILES['Filedata']['tmp_name'], $destination ) ){
			return true ;
			echo 'TRANSFERT OK';
		}			
				else  return false ;
	} 
		else return false ;
?>