J'utilise ce code de téléchargement (php) que j'ai trouvé en ligne pour le formulaire de téléchargement d'image.
Je me rends compte qu'il y a déjà beaucoup de questions/réponses sur le site concernant le "renommer les fichiers" lors du téléchargement, et j'ai fait pas mal de recherches à ce sujet.
Jusqu'à présent... aucun d'entre eux ne semble répondre spécifiquement à ce que je veux faire.
J'espère que cela pourra être réalisé en ajustant le code que j'utilise.
À terme... J'aimerais pouvoir télécharger un seul fichier (pas plusieurs) et que les fichiers soient automatiquement nommés avec un simple numéro, par exemple 1, 2, 3, 4 ou 5 etc...
Pas de préfixe et pas d'extension. Juste la valeur numérique du nom.
Cependant, j'aimerais que le code vérifie d'abord le répertoire cible pour analyser quels fichiers "nom" existent déjà.
Donc, si les fichiers existants dans le répertoire sont 1, 2, 3, 4 et 5..., les nouveaux fichiers seront automatiquement nommés 6 dans l'ordre et ainsi de suite.
Cependant, si les fichiers existants dans le répertoire sont 1, 2, 4 et 5 (3 n'existe pas), le nouveau fichier sera téléchargé en tant que 3 pour conserver l'ordre.
Alternativement, pour mes besoins particuliers, cela ne me dérange même pas si toutes les images du répertoire sont renommées lors d'un nouveau téléchargement. Changer essentiellement l’ordre afin que la séquence des nombres soit préservée.
Voici le code de téléchargement que j'utilise actuellement :
<?php $target_dir = "userImages/userID/"; $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); $uploadOk = 1; $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION)); // Check if image file is a actual image or fake image if(isset($_POST["submit"])) { $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); if($check !== false) { echo "File is an image - " . $check["mime"] . "."; $uploadOk = 1; } else { echo "File is not an image."; $uploadOk = 0; } } // Check if file already exists if (file_exists($target_file)) { echo "Sorry, file already exists."; $uploadOk = 0; } // Check file size if ($_FILES["fileToUpload"]["size"] > 500000) { echo "Sorry, your file is too large."; $uploadOk = 0; } // Allow certain file formats if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) { echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; $uploadOk = 0; } // Check if $uploadOk is set to 0 by an error if ($uploadOk == 0) { echo "Sorry, your file was not uploaded."; // if everything is ok, try to upload file } else { if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded."; } else { echo "Sorry, there was an error uploading your file."; } } ?>
Vous pouvez essayer cette fonction, elle vérifiera si les fichiers du répertoire sont nommés consécutivement puis les renommera pour qu'ils soient toujours numérotés, la fonction renvoie le numéro suivant du fichier nouvellement téléchargé
Comment mettre en œuvre ?