Renommer séquentiellement les fichiers lors du téléchargement en fonction des fichiers existants dans le répertoire
P粉310931198
P粉310931198 2023-09-10 13:14:12
0
1
544

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 :

 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."; } } ?>

P粉310931198
P粉310931198

répondre à tous (1)
P粉713866425

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é

function get_next_file_number($target_dir) { $files = scandir($target_dir); if (false === $files) { // If false then is not a directory, you could throw an Exception here return -1; } $counter = 0; unset($files[0], $files[1]); // Delete the . and .. from array natsort($files); // Important! Sort file names naturally foreach ($files as $file) { ++$counter; $file_info = pathinfo($file); $file_name = $file_info['filename']; $extension = $file_info['extension']; if ($file_name != $counter) { $old_name = $target_dir . DIRECTORY_SEPARATOR . $file; $new_name = $target_dir . DIRECTORY_SEPARATOR . $counter . "." . $extension; if (!file_exists($new_name)) { rename($old_name, $new_name); } else { // Oops trying to rename to a file that already exists, this shouldn't happen! } //echo "renamed: " . $old_name . " to " . $new_name, "
"; } } return $counter + 1; }

Comment mettre en œuvre ?

// ..... // You can check the returned value, if it is -1 you know there was an error $next_number = get_next_file_number($target_dir); $new_target_file = $target_dir . $next_number . "." . $imageFileType; // Here you can make sure the file does not exists... just to make sure... // Here move the uploaded file with the next number if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $new_target_file)) { echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded."; } // .....
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!