rename

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : rename

Re: rename

par jobi1722 » 03 juil. 2017, 13:25

Bonjour,

Dans ta méthode getNewName(), la variable $dossier n'existe pas. Pense à mettre le chemin dans lequel tu veux le mettre.

Lorsque tu utilises ta classe tu dois appeler ta méthode :

Code : Tout sélectionner

require('class/Image.php'); $image = new Image; // instanciation de la classe Image $image->getNewName();
Bon courage
@+

Re: rename

par quattro » 28 juin 2017, 13:17

merci
je voudrais intégrer ce code :

Code : Tout sélectionner

// Renomer mon fichier $newName = $_POST['renom']; if( !move_uploaded_file($tmp_file, $dossier."/".$newName)) { exit("Impossible de copier le fichier dans $dossier"); } echo " Le fichier a bien été uploadé"; }
dans une class que j'ai appelé : Image.php.
cela ressemble à ca :

Code : Tout sélectionner

<?php class Image { public function getNewname() { // Renomer mon fichier $newName = $_POST['renom']; if( !move_uploaded_file($tmp_file, $dossier."/".$newName)) { exit("Impossible de copier le fichier dans $dossier"); } echo " Le fichier a bien été uploadé"; } } ?>
ensuite dans l'autre fichier, je viens récupéré le résultat avec le code suivant :

Code : Tout sélectionner

require('class/Image.php'); $image = new Image; // instanciation de la classe Image
cela ne fct pas ?

Re: rename

par Spols » 27 juin 2017, 11:26

sais tu comment fonctionne move_uploaded_file ?
En gros
lors de la soumission d'un formulaire avec un fichier, php va télécharger le fichier dans un dossier temporaire. tu va pouvoir alors vérifier que ce fichier correspond à ce que tu veux (taille max, extension, ...)
ensuite tu fait appel à move_uploaded_file pour déplacer le fichier de son emplacement temporaire vers sa position définitive en te permettant de choisi cette place et même son nom définitif.

il te suffit donc de faire confiance à cette fonction pour renomer ton fichier lors du transfert
 // on copie le fichier dans le dossier de destination
$name_file = $_FILES['fichier']['name'];
// Renomer mon fichier
$newName = $_POST['renom'];
if( !move_uploaded_file($tmp_file, $dossier."/".$newName))
{
exit("Impossible de copier le fichier dans $dossier");
}
echo " Le fichier a bien été uploadé";
// Renomer mon fichier
$newName = $_POST['renom'];
var_dump ($tmp_file,$newName);

Re: rename

par quattro » 26 juin 2017, 21:47

j'ai donc mis mon code tout a la fin :

Code : Tout sélectionner

// on copie le fichier dans le dossier de destination $name_file = $_FILES['fichier']['name']; if( !move_uploaded_file($tmp_file, $dossier."/".$name_file)) { exit("Impossible de copier le fichier dans $dossier"); } echo " Le fichier a bien été uploadé"; // Renomer mon fichier $newName = $_POST['renom']; $newFile = rename($tmp_file,$newName); var_dump ($tmp_file,$newName);
quand je fais le var-dump, je vois bien le fichier renomé grace à :
$newName = $_POST['renom'];
mais dans le dossier il reste toujours en ancien nom de fichier ?
si je fais un var_dump sur $newFile cela me mais une erreur false.

Re: rename

par Spols » 26 juin 2017, 16:04

Tu dois renomer ton fichier après avoir utilisé move_upload_file sinon la fonction ne tretrouve pas ton fichier temporaire d'où l'erreur que tu mentionne en premier post

Re: rename

par quattro » 26 juin 2017, 13:12

voici mon code :

Code : Tout sélectionner

<form method="post" enctype="multipart/form-data" action=""> <input type="file" name="fichier" multiple="multiple"><br> Nouveau nom : <input type="text" name="renom" ><br> Dossier de destination : <input type="text" name="dir" size="12"><br> <input type="submit" name="upload" > </form> <?php if( isset($_POST['upload']) ) // si formulaire soumis { //on transforme en fichier temporaire xxxx.tmp $tmp_file = $_FILES['fichier']['tmp_name']; if( !is_uploaded_file($tmp_file) ) { exit("Le fichier est introuvable"); } // on vérifie l'extension $type_file = $_FILES['fichier']['type']; if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif')) { exit("Le fichier n'est pas une image"); } // Renomer mon fichier $newName = $_POST["renom"]; $newFile = rename($tmp_file,$newName); // On créer un dossier if(isset($_POST['upload']))//si le formulaire est soumis { if (!empty($_POST['dir'])) { //si le champ name n'est pas vide $dossier = $_POST['dir']; //si le dossier n'existe pas déjà if(!file_exists($dossier)) { mkdir($dossier,0777,true); echo "Le Dossier -- ".$dossier." -- a bien ete cree"; } } else { echo "Veuillez rentrer un nom"; } } // on copie le fichier dans le dossier de destination $name_file = $_FILES['fichier']['name']; if( !move_uploaded_file($tmp_file, $dossier."/".$name_file)) { exit("Impossible de copier le fichier dans $dossier"); } echo " Le fichier a bien été uploadé"; } ?>
En fait le but c'est que je veux renommer un fichier ex : voiture.jpg en voiture555.jpg. J'utilise donc "rename" mais cela ne fct pas ? est-ce le bon procédé ?

Re: rename

par moogli » 12 juin 2017, 19:33

salut,

est tu certains d'avoir la structure que tu attends ?
=> var_dump($_FILES); pour voir le contenue du tableau.
ton message parle de la fonction move_uploaded_file et tu nous sort une ligne de code avec la fonction rename !
si ton but c'est de modifier le nom d'un fichier existant pourquoi pas. Par contre si c'est modifier le nom du fichier temporaire de l'upload c'est une bétise, et du coup je comprend que move_uploaded_file ne trouve pas le fichier.
la fonction move_uploaded_file va te permettre de nommer ton fichier comme tu le souhaites à la destination.

juste au passage, si ton fichier contient bien les deux lignes de ton premier message tu as un beau trous de sécurité (comme par exemple remplacer ton index.php par un autre fichier qui va être utile a quelqu'un d'autre ;)

pour l'upload de fichier je te propose de lire ceci

ps : tu indiques la possibilité d'upload multiple mais tu ne sembles pas le gérer dans le code...

@+

Re: rename

par quattro » 12 juin 2017, 13:22

en fait j'ai cela avant :

Code : Tout sélectionner

<form method="post" enctype="multipart/form-data" action=""> <input type="file" name="fichier" multiple="multiple"><br> Nouveau nom : <input type="text" name="renom" ><br> Dossier de destination : <input type="text" name="dir" size="12"><br> <input type="submit" name="upload" > </form> <?php if( isset($_POST['upload']) ) // si formulaire soumis { //on transforme en fichier temporaire xxxx.tmp $tmp_file = $_FILES['fichier']['tmp_name']; if( !is_uploaded_file($tmp_file) ) { exit("Le fichier est introuvable"); }

Re: rename

par or 1 » 12 juin 2017, 13:17

la ligne indiquée dans le message d'erreur correspond bien à ces lignes ?
car cela parle de la fonction move_uploaded_file et non de la fonction rename.

rename

par quattro » 12 juin 2017, 12:23

Bonjour
voici mon code :

Code : Tout sélectionner

// Renomer mon fichier $newName = $_POST["renom"]; $newFile = rename($tmp_file,$newName);
Je voudrais renommer un fichier temporaire "$tmp_file" avec le nouveau nom "$newName", mais cela ne fct pas ?
message : move_uploaded_file(): Unable to move 'C:\Users\maintenance_voirie\AppData\Local\Temp\phpCD69.tmp' to 'tests/porch.jpg'