File vor dem upload umbenennen

Uli_87

Erfahrenes Mitglied
Guten Tag,
Ich habe einen Script programmiert mit dem man auch Dateien hochladen kann, alle die hochgeladene Dateien werden auch in einer DB geschrieben. Nun habe ich einen Problem, wenn ich zwei Bilder mit dem gleichen Namen hochlade wird der erste überschreibt. Ich habe es versucht so zu lösen:

PHP:
$file1name = $_FILES['file1']['name']; 
$sqlconnessione = mysql_connect($host, $username, $password) or die("Verbindungsfehler");
mysql_select_db($db, $sqlconnessione);
$select = "SELECT file1,file2 FROM novicom_inhalt";
$risultat = mysql_query($select);
$data = mysql_fetch_array($risultat);
$file1 = $data['file1'];
foreach ($file1 as $fil1);
if ($file1name == $fil1) {
$file1name = "1$file1name";
}
//Es ist nicht den ganzen Script...



Aber somit geht es immer noch nicht... Was habe ich falsch gemacht?

Vielen Dank
Uli
 
Zuletzt bearbeitet:
Du solltest bevor Du die Datei mittels move_uploaded_file() verschiebst ueberpruefen ob es bereits eine Datei mit dem gewuenschten Namen gibt. Falls ja, haengst Du einfach ein Suffix dran, z.B. wird dann aus pusteblume.jpg einfach pusteblume_1.jpg.
Natuerlich solltest Du auch da auf Existenz pruefen und gegebenenfalls das Suffix noch erhoehen um irgendwann einen freien Dateinamen zu finden.
 
Noch zu diesem Script:

PHP:
foreach($linea1 as $fil1) {
while ($file1name == $fil1) {
$file1name = "1$file1name";
}
}

Kann ich sowas machen? Habe es versucht, geht aber nicht!

Vielen Dank
Uli
 
Es reicht nicht wenn Du einfach eine 1 vor den Dateinamen setzt, denn nachdem Du 2 mal das Bild pusteblume.jpg hochgeladen hast wird beim dritten Upload 1pusteblume.jpg mit der neuen Datei ueberschrieben.
 
Uli_87 hat gesagt.:
Wie muss ich es ansonsten machen? Kann er dies nicht 11pusteblume.jpg nennen?

Vielen Dank
Nicht wenn Du es nicht im Code festlegst.

Ungefaehr so koennte das aussehen (Achtung: Beispiel (!)):
PHP:
$filename=$_FILES['uploadfile']['name'];
$images=mysql_query("select * from images where filename='".$filename."'");
while (mysql_num_rows($images)>0)
{
 $filename='1'.$filename;
 $images=mysql_query("select * from images where filename='".$filename."'");
}
So wird dann so lange eine 1 vor den Dateinamen gesetzt bis irgendwann ein freier Dateiname gefunden wurde.
 
Naja man könnte ja auch einfach den Ordner auslesen und alle Übereinstimmungen mit Pusteblume suchen als String, die Anzahl der Funde wären dann die es schon alle Bilder die eine Pusteblume im Namen haben und noch eine 1,2...n davor zum Beispiel. Dann hast Du auch einen fortlaufenden Schlüssel.

Etwas umständlich aber was anderes würde mir so spontan nicht einfallen.

Man könnte auch das Datum nehmen , oder den Timestamp und beide in einen md5 hash umwandeln und da die letzten 2 - x werte ranhängen , aber diese könnten sich auch mal überschneiden. Nur wenn du den kompletten md5 hash ranhängst kannst sicher gehen das Du niemals den selben Namen hättest , aber wer will schon einen Dateinamen der 32 + x Zeichen lang ist *G*
 
Nichts zu danken. Und in der Regel reicht Dennis, wird sind ja hier nicht bei Demolition Man wo man sich immer mit Vor- und Nachnamen anredet. ;)

Falls damit alle Probleme aus der Welt geschafft sind denk bitte daran den Thread als erledigt zu markieren, falls nicht schon geschehen.
 
Zurück