rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

Php renommer un fichier

Posté par nanaixme, le lundi 11 juin 2007 à 15:42:05
je voudrais savoir si il est possible et comment faire pour renommer un fichier uploadé en fonction d'un choix effectué dans des checkbox d'un formulaire.

Le code de mon form est :
<table id="choixMarque">	
	<tr >
	        <td><input type="checkbox" name="choixMarquePrincipal[]" value="luminarc" id="luminarc"></td>
		<td>Luminarc</td>				
		<td><input type="checkbox" name="choixMarquePrincipal[]" value="mikasa" id="mikasa"></td>
		<td>Mikasa</td>
		<td><input type="checkbox" name="choixMarquePrincipal[]" value="mikasa Oenologie" id="mikasaOenologie"></td>
		<td>Mikasa oenologie</td>
		<td><input type="checkbox" name="choixMarquePrincipal[]" value="studio Nova" id="sn"></td>
		<td>Studio Nova</td>
		<td><input type="checkbox" name="choixMarquePrincipal[]" value="cda" id="cda"></td>
		<td>Cristal d'Arques</td>
	</tr>
</table>


Il faudrait que je renomme mon fichier uploadé en fonction de ce qu'à cocher l'utilisateur entre les marques.

Voilà le code de mon upload de fichier :

<?

// Récupération du dossier dans lequel le fichier sera uploadé	
$DESTINATION_FOLDER = 'upload/' ;								
// Taille maximale de fichier, valeur en bytes					
$MAX_SIZE = 50000000 ;													
// Définition des extensions de fichier autorisées (avec le ".")
$AUTH_EXT = array( ".jpg", ".jpeg") ;											


// Fonction permettant de vérifier si l'extension du fichier est
// autorisée.

function isExtAuthorized($ext){
	global $AUTH_EXT;
	if(in_array($ext, $AUTH_EXT)){
		return true;
	}else{
		return false;
	}
}

// On vérifie que le champs contenant le chemin du fichier soit
// bien rempli.

if(!empty($_FILES['fichier1']["name"])){
	
	// Nom du fichier choisi:
	$nomFichier = $_FILES['fichier1']["name"] ;
	// Nom temporaire sur le serveur:
	$nomTemporaire = $_FILES['fichier1']["tmp_name"] ;
	// Type du fichier choisi:
	$typeFichier = $_FILES['fichier1']["type"] ;
	// Poids en octets du fichier choisit:
	$poidsFichier = $_FILES['fichier1']["size"] ;
	// Code de l'erreur si jamais il y en a une:
	$codeErreur = $_FILES['fichier1']["error"] ;
	// Extension du fichier
	$extension = strrchr($nomFichier, ".") ;
	
	// Si le poids du fichier est de 0 bytes, le fichier est
	// invalide (ou le chemin incorrect) => message d'erreur
	// sinon, le script continue.
	if($poidsFichier <> 0){
		// Si la taille du fichier est supérieure à la taille
		// maximum spécifiée => message d'erreur
		if($poidsFichier < $MAX_SIZE){
			// On teste ensuite si le fichier a une extension autorisée
			if(isExtAuthorized($extension)){
				// Ensuite, on copie le fichier uploadé ou bon nous semble.
				$uploadOk = move_uploaded_file($nomTemporaire, $DESTINATION_FOLDER . $nomFichier) ;
			}else{
				echo ("Files with extension $extension can't be upload<br>") ;
			}
		}else{
			$tailleKo = $MAX_SIZE / 1000;
			echo("You can't upload files with higher size than tailleKo Ko.<br>");
		}		
	}else{
		echo("The selected file is not correct <br>");
	}
}else{
	echo("You didn't choose a file<br>");
}
Configuration: Windows XP
Firefox 1.5.0.12
Répondre à nanaixme  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Camuke, le lundi 11 juin 2007 à 15:54:09
utilise la fonction rename:
<?
rename(nom_depart, nom_nouveau);
?>

donc dans ton cas sa donnerai sa:

$nomFichier = $_FILES['fichier1']["name"] ;
$NewNomFichier = 'LeNomQueTuVeut';
rename($nomFichier, $NewNomFichier);
Répondre à Camuke

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
nanaixme, le lundi 11 juin 2007 à 16:07:48
J'ai utilisé la fonction rename(), mon souci vient plus du fait que le nouveau nom de mon fichier doit etre récupérer dans le tableau choixMarquePrincipal[]

En théorie, je devrais faire si je comprends bien

$nomFichier=$_FILES['fichier1']["name"] ;
$newNomFichier=$choixMarquePrincipal[$i] ;
rename($nomFichier,$newNomFichier) ;

mais comment parcourir mon tableau $choixMarquePrincipal[] et vérifier qu'une case est cochée
Répondre à nanaixme

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Camuke, le mardi 12 juin 2007 à 09:53:56
Si j'ai bien compris, l'utilisateur doit selectionner le nom de son fichier a partir de ta liste mais, il doit en choisir qu'un seul? Si oui, il faut utilise plutot des boutons radio donc sa donnerai sa:
formulaire de choix du nom:
<table id="choixMarque">
<tr >
<td><input type="radio" name="choixMarquePrincipal" value="luminarc" id="luminarc"></td>
<td>Luminarc</td>
<td><input type="radio" name="choixMarquePrincipal" value="mikasa" id="mikasa"></td>
<td>Mikasa</td>
<td><input type="radio" name="choixMarquePrincipal" value="mikasa Oenologie" id="mikasaOenologie"></td>
<td>Mikasa oenologie</td>
<td><input type="radio" name="choixMarquePrincipal" value="studio Nova" id="sn"></td>
<td>Studio Nova</td>
<td><input type="radio" name="choixMarquePrincipal" value="cda" id="cda"></td>
<td>Cristal d'Arques</td>
</tr>
</table>

Ensuite, tu recupere toute les données de ton fichier mais nul part tu ne recupere les donnée de tes bouton donc quelque part dans ton code:
if (isset($_GET['choixMarquePrincipal'] (ou $_POST)) {
$NewNomFichier = $_GET['choixMarquePrincipal']; //sa va ecrire dans la variable le value
}
et apres tu aura:
$nomFichier=$_FILES['fichier1']["name"] ;
rename($nomFichier,$newNomFichier) ;

Normalement sa doit marcher, si s'est bien se que tu veux
Répondre à Camuke

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
nanaixme, le mardi 12 juin 2007 à 11:20:43
L'utlisateur a la possibilité de cocher pls marques c'est pr cela que ce sont des checkbox et non des boutons radios.

j'ai des écrit un fichier où je récupère les données en $_POST :

if (isset($_POST['choixMarque'])) {
$choixMarque="" ;
for($i=0,$c=count($_POST['choixMarque']); $i<$c; $i++){
$choixMarque.= $_POST['choixMarque'][$i] ;
}
}

Je vais essayer ce que tu m'as dit...
Répondre à nanaixme

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Camuke, le mardi 12 juin 2007 à 11:36:17
Je veux bien utiliser des checkbox, le probleme s'est qu'un fichier peux avoir QU'UN SEUL NOM ^^. donc si il en selectionne plusieur, apres faut soit que tu lui demande lequel il veux comme non soit que tu le choississent toi meme.
Si tu leur fait choisir le nom principale:
tu peux faire un 2eme formulaire avec une liste deroulante qui contient les nom choisit et il doivent choisir le nom du fichier.
exemple si tu le choisit toi meme:
tu met un ordre de priorite au nom: si X, Y, Z sont coché, alors s'est X qui est utilise. si A, X, B est coché, s'est A qui est utilisé.
Répondre à Camuke

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
nanaixme, le mardi 12 juin 2007 à 11:53:55
J'avais pensé au principe de priorité du nom de marque si il y en a pls mais mon client désire voir apparaitre ts les noms de marque. Je pensais dc concaténer les noms de marque si c'est possible mais ce qui vt dire qu'il faut parcourir le tableau pr savoir quelle marque est cochée ou non.

Je ne sais pas si je suis claire.
Répondre à nanaixme

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Camuke, le mardi 12 juin 2007 à 12:16:46
Je vais chercher ou ete l'erreur mais voila le code qui devrai marcher:

le formulaire avec des case a cocher:
<table>
<tr >
<td><input type="checkbox" name="choixMarquePrincipal[]" value="luminarc" id="luminarc"></td>
<td>Luminarc</td>
<td><input type="checkbox" name="choixMarquePrincipal[]" value="mikasa" id="mikasa"></td>
<td>Mikasa</td>
<td><input type="checkbox" name="choixMarquePrincipal[]" value="mikasa Oenologie" id="mikasaOenologie"></td>
<td>Mikasa oenologie</td>
<td><input type="checkbox" name="choixMarquePrincipal[]" value="studio Nova" id="sn"></td>
<td>Studio Nova</td>
<td><input type="checkbox" name="choixMarquePrincipal[1" value="cda" id="cda"></td>
<td>Cristal d'Arques</td>
</tr>
</table>
(il y a pas le <form> et le <submit>, je supose qu'il est plus loin dans ton formulaire?)

et dans le code:
pour renommer j'ai pris ta derniere idée, je recupere tout les valeur des cases coché et je les concatenne pour faire un nom:
$NewNomFichier = "";
if (isset($_POST['choixMarquePrincipal'])) {
for ($i = 0, $c = count($_POST['choixMarquePrincipal']); $i < $c; $i++) {
$NewNomFichier = $NewNomFichier . $_POST['choixMarquePrincipal'][$i];
}
}

et enfin:
$nomFichier=$_FILES['fichier1']["name"] ;
rename($nomFichier, $NewNomFichier) ;

En theorie, sa marche!!
Répondre à Camuke

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
nanaixme, le mardi 12 juin 2007 à 12:40:52
Cela marche correctement, j'ai fait des petites modifs ds mon script autour.

Encore une question, mes fichiers ne seront que des images jpg ou jpeg lorsque je regarde mon répertoire où je stocke mes images, l'image renommée n'a pas d'extension. Il y a une possibilité de garder la mm extension après le renommage ?
Répondre à nanaixme

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Camuke, le mardi 12 juin 2007 à 12:47:12
A moins que tu ai reecrit le code dans le post, ton erreur est toute simple:

dans ton formulaire du 1er post, tu ecrit sa:
<td><input type="checkbox" name="choixMarquePrincipal[]" value="luminarc" id="luminarc"></td>

et dans un post ou tu ecrit ton code de recuperation tu ecrit sa:
if (isset($_POST['choixMarque'])) {
$choixMarque="" ;
for($i=0,$c=count($_POST['choixMarque']); $i<$c; $i++){
$choixMarque.= $_POST['choixMarque'][$i] ;
}
}


A mon avis, ton erreur vient juste du fait que la variable $_POST['choixMarque'] n'existe pas car ton formulaire envoie un $POST de choixMarquePrincipal
La variable que tu recupere doit avoir EXACTEMENT le meme nom a la majuscule pres, sinon php pensera que se ne sont pas les memes.
Répondre à Camuke

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Camuke, le mardi 12 juin 2007 à 12:52:15
Juste avant le rename tu fait sa:
$extension = ".jpg"
$NewNomFichier = $NewNomFichier . $extension
rename($nomFichier, $NewNomFichier) ;
Répondre à Camuke

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
nanaixme, le mardi 12 juin 2007 à 13:15:20
J'avais bien modifié le script avec le bon nom de variable. Dc avc ttes modifications des bouts de scripts cela donne ca :

script du formulaire :
<table id="choixMarque">	
	<tr >
	       <td><input type="checkbox" name="choixMarquePrincipal[]" value="luminarc" id="luminarc"></td>
	       <td>Luminarc</td>
		<td><input type="checkbox" name="choixMarquePrincipal[]" value="mikasa" id="mikasa"></td>
		<td>Mikasa</td>
		<td><input type="checkbox" name="choixMarquePrincipal[]" value="mikasa Oenologie" id="mikasaOenologie"></td>
		<td>Mikasa oenologie</td>
		<td><input type="checkbox" name="choixMarquePrincipal[]" value="studio Nova" id="sn"></td>
		<td>Studio Nova</td>
		<td><input type="checkbox" name="choixMarquePrincipal[]" value="cda" id="cda"></td>
		<td>Cristal d'Arques</td>
	</tr>
</table>


Script pour récupérer les données
//TRONC COMMMUN	
	$NewNomFichier = "" ; //variable de renommage de fichier uploadé et affiche le nom de la marque
	if (isset($_POST['choixMarquePrincipal'])) {
		for ($i = 0, $c = count($_POST['choixMarquePrincipal']); $i < $c; $i++) {
			$NewNomFichier = $NewNomFichier . $_POST['choixMarquePrincipal'][$i] ;
		}
	} 
	
	$NewNomFichier2 = "" ; //variable de renommage de fichier uploadé et affiche le nom du "what"
	if(isset($_POST['choixForm'])) {
		for($i=0,$c=count($_POST['choixForm']); $i<$c; $i++){ 
			$NewNomFichier2 = $NewNomFichier2 . $_POST['choixForm'][$i] ;
		}
	} 


script d'upload avc renommage de fichier :

// Récupération du dossier dans lequel le fichier sera uploadé	
$DESTINATION_FOLDER = 'upload/' ;								
// Taille maximale de fichier, valeur en bytes					
$MAX_SIZE = 50000000 ;													
// Définition des extensions de fichier autorisées (avec le ".")
$AUTH_EXT = array( ".jpg", ".jpeg") ;											


// Fonction permettant de vérifier si l'extension du fichier est
// autorisée.

function isExtAuthorized($ext){
	global $AUTH_EXT;
	if(in_array($ext, $AUTH_EXT)){
		return true;
	}else{
		return false;
	}
}

// On vérifie que le champs contenant le chemin du fichier soit
// bien rempli.

if(!empty($_FILES['fichier1']["name"])){
	
	// Nom du fichier choisi:
	$nomFichier = $_FILES['fichier1']["name"] ;
	// Nom temporaire sur le serveur:
	$nomTemporaire = $_FILES['fichier1']["tmp_name"] ;
	// Type du fichier choisi:
	$typeFichier = $_FILES['fichier1']["type"] ;
	// Poids en octets du fichier choisit:
	$poidsFichier = $_FILES['fichier1']["size"] ;
	// Code de l'erreur si jamais il y en a une:
	$codeErreur = $_FILES['fichier1']["error"] ;
	// Extension du fichier
	$extension = strrchr($nomFichier, ".") ;
	
	// Si le poids du fichier est de 0 bytes, le fichier est
	// invalide (ou le chemin incorrect) => message d'erreur
	// sinon, le script continue.
	if($poidsFichier <> 0){
		// Si la taille du fichier est supérieure à la taille
		// maximum spécifiée => message d'erreur
		if($poidsFichier < $MAX_SIZE){
			// On teste ensuite si le fichier a une extension autorisée
			if(isExtAuthorized($extension)){
				// Ensuite, on copie le fichier uploadé ou bon nous semble.
				$uploadOk = move_uploaded_file($nomTemporaire, $DESTINATION_FOLDER . $nomFichier) ;
				rename($DESTINATION_FOLDER.$nomFichier, $DESTINATION_FOLDER.$NewNomFichier."_".$NewNomFich­ier2) ; 



Pr le renommage j'ai rajouté une variable suite à une nouvelle demande du client mais cela marche correctement
Répondre à nanaixme

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 nanaixme, le mardi 12 juin 2007 à 13:25:45
Voilà ca marche impeccable, merci pr ton aide
Répondre à nanaixme
Discussions pertinentes trouvées dans le forum
10/04 16h37Renommer fichier avec php/IIS0
23/07 17h03Renommer fichier a la date du jour4
15/07 18h01[PHP] Compression fichir .zip OU .tar.gz1
29/06 19h03Impossible renommer fichiers5
Plus de discussions sur « php renommer un fichier »
Logiciels pertinents trouvés dans les téléchargements
Télécharger MP3Tag 2.37aMP3Tag - Mp3tag est un éditeur de Métatags (ID3 tags) pour la plupart des formats audio courants. Il est capable de renommer un grand...Catégorie: Marquage (ID3)
Licence: Freeware/gratuit
Télécharger PHP Edit 0.6PHP Edit - PHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de...Catégorie: PHP
Licence: Freeware/gratuit
Télécharger dia 0.96.1-8dia - DIA est un équivalent libre du programme VISIO de Microsoft; permettant de créer des diagrammes, des organigrammes, des...Catégorie: Dessin
Licence: Open Source
Télécharger AVS Disc Creator 2.1.5.100AVS Disc Creator - Avec AVS DiscCreator vous pouvez rapidement graver vos données sur CD/DVD et Blu-ray disc. <h2>Fonctionnalités</h2> ...Catégorie: Gravure
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « php renommer un fichier »