Ich verwende diesen (PHP-)Upload-Code, den ich online für das Bild-Upload-Formular gefunden habe.
Mir ist klar, dass es auf der Website bereits viele Fragen/Antworten zum Thema „Umbenennen von Dateien“ beim Hochladen gibt, und ich habe ziemlich viel darüber recherchiert.
Bisher ... scheint keiner von ihnen speziell darauf einzugehen, was ich tun möchte.
Hoffentlich kann dies durch Anpassen des von mir verwendeten Codes erreicht werden.
Letztendlich möchte ich eine einzelne Datei (nicht mehrere) hochladen und die Dateien automatisch mit einer einfachen Nummer benennen, z. B. 1, 2, 3, 4 oder 5 usw.
Kein Präfix und keine Erweiterung. Nur der numerische Wert des Namens.
Ich möchte jedoch, dass der Code zunächst das Zielverzeichnis überprüft, um zu scannen, welche Dateien „Name“ bereits vorhanden sind.
Wenn also die vorhandenen Dateien im Verzeichnis 1, 2, 3, 4 und 5... sind, werden die neuen Dateien automatisch der Reihe nach mit 6 usw. benannt.
Wenn jedoch die vorhandenen Dateien im Verzeichnis 1, 2, 4 und 5 sind (3 existiert nicht), wird die neue Datei als 3 hochgeladen, um die Reihenfolge beizubehalten.
Alternativ macht es mir für meine speziellen Bedürfnisse nicht einmal etwas aus, wenn alle Bilder im Verzeichnis bei einem neuen Upload umbenannt werden. Im Wesentlichen die Reihenfolge ändern, sodass die Reihenfolge der Zahlen erhalten bleibt.
Dies ist der Upload-Code, den ich derzeit verwende:
<?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."; } } ?>
您可以尝试这个函数,它会检查目录中的文件是否连续命名,然后重命名以使其始终编号,该函数返回新上传文件的下一个编号
如何实现?