Salut :hello:
J’ai un petit soucis avec un code, j’ai cherché sur plusieurs sites et je ne comprend pas ce qui ne fonctionne pas, peut-être que vous pourrez m’aider ^^
Le but, c’est un petit outil qui permet d’uploader des fichiers sur un site.
Pour ça j’ai pris un code tout simple que l’on trouve sur tous les sites.
J’y ai ajouté un petit truc, c’est que le nom du fichier est attribué automatiquement par ordre.
En fait, chaque nom est à chaque enregistrement je fais ajouter +1 dans le fichier de référence.
L’upload se passe bien mais où je peine c’est pour récupérer l’extension du fichier pour la lui réatribuer.
Ex : J’upload le fichier test.jpg, il sera renomé en tempXXX, puis en 26 (d’après le nombre courrant).
Le problème c’est que je veux ajouter l’extension “.jpg” après le 26 et là ça coince.
Voilà le code que j’utilise :
— Contenu de formulaire.htm —
<form method="POST" ENCTYPE="multipart/form-data" action="upload.php">
<p>
<input type="file" name="fichier" size="20"></p>
<p>
<input type="submit" value="Envoyer" name="B1"></p>
</form>
— Contenu de upload.php …
<?php
$repertoireDestination = "";
include("id.php");
$name = $id + 1;
$filename = $fichier;
$extension=strrchr($filename,'.');
if (is_uploaded_file($_FILES["fichier"]["tmp_name"])) {
if (rename($_FILES["fichier"]["tmp_name"],
$repertoireDestination.$name.$extension)) {
echo "Le fichier temporaire".$_FILES["fichier"]["tmp_name"].
" a été déplacé vers ".$repertoireDestination.$name.$extension;
$identifi = '<?php'."\n\n";
$identifi .= '$id = \'' . $name . '\';' . "\n";
$identifi .= '?' . '>';
$x = fopen("id.php","w");
fputs($x, $identifi );
fclose($x);
} else {
echo "Le déplacement du fichier temporaire a échoué".
" vérifiez l'existence du répertoire ".$repertoireDestination;
}
} else {
echo "Le fichier n'a pas été uploadé";
}
?>
Ca se passe sur un serveur dédié, j’ai donc modifié ces paramètres dans php.ini (php4 / php5) :
file_uploads= On
upload_tmp_dir = tmp
upload_max_filesize = 2000M
post_max_size = 2000M
Voilà, n’étant pas un pro du PHP, je dois avoir fais une erreur quelque part ?
Merci d’avance