PHP - Neuer Dateiname falls eine hoch geladene Datei bereits existiert

Falls eine Datei mit dem Dateinamen bereits existiert, wird eine Zahl an den Dateinamen angehängt.

verzeichnis/dateiname.jpg
verzeichnis/dateiname1.jpg
verzeichnis/dateiname2.jpg
verzeichnis/dateiname3.jpg
…

<?php

// Neuer Dateiname falls eine hoch geladene Datei bereits existiert

//Pfad
$new_path $upload_folder $filename '.' $extension;

if (
file_exists($new_path)) {
 
$nr 1;
 do {
  
// Falls Datei existiert, hänge eine Zahl an den Dateinamen
  
$new_path $upload_folder $filename.$nr '.' $extension;
  
$nr++;
 }
 while(
file_exists($new_path));
}
?>

Den Namen einer hochgeladenen Datei filtern


<?php

// Den Namen einer hochgeladenen Datei filtern
// ...
$directory "uploads/";

// Maximale Länge des Dateinamens
$filenamemax 65;

// Name und Erweiterung der Datei ermitteln
$path pathinfo($_FILES["datei"]["name"]);
$filename $path["filename"];
$extension strtolower($path["extension"]);

// Dateiname filtern
$filename utf8_decode($filename); // utf-8 decodiert
$filename trim($filename); // Whitespace
$filename mb_strtolower($filename); // Kleinbuchstaben

// Hier entsprechende Zeichen und Ersatzzeichen (vom ASCII-Zeichensatz) einfügen
$filename str_replace(["ä""ö""ü""ß"" ", ], ["ae""oe""ue""ss""_", ], $filename);

// Angegebene Zeichen durchlassen, alle sonstigen filtern
$filename preg_replace("/[^a-z0-9_-]/"""$filename);

// Länge des Dateinamens eventuell kürzen
$newname substr($filename0$filenamemax) . "." $extension;

// Wenn die Datei vorhanden ist, hänge eine Zahl an den Dateinamen
if (file_exists($directory $newname)) {
 
$nr 2;
 do {
  
$newname substr($filename0$filenamemax) . $nr "." $extension;
  
$nr++;
 }
 while(
file_exists($directory $newname));
}

// ...
?>

Bausteine  Alle Anzeigen

Eine zufällige Auswahl von Codeschnipseln aus den Bereichen HTML, CSS, PHP, JavaScript und MySQL.

<embed>Externe Anwendung

CSS - DiscoLights - Box-Shadow Animation

PHP - Den Inhalt aller Textdateien nach einem Suchbegriff durchsuchen

JavaScript - Erkennung für Chromium-basierte Browser

MySQL - Datum (DATETIME) in ein deutsches Datumsformat umwandeln