php Eindeutiger Dateiname beim Hochladen

7

Ich habe ein Diskussionsformular mit Bildupload auf meiner Website eingereicht. Jetzt möchte ich einen eindeutigen Dateinamen hochladen, wenn der Benutzer sein Bild einreicht, so dass ich das Ergebnis aller Bilder anzeigen kann und doppelten Dateinamen vermeiden kann. Wie kann man das mit PHP machen? Wenn Sie meinen Formularprozesscode benötigen, werde ich ihn hochladen.

Vielen Dank.

    
Umme Habiba Kanta 19.12.2011, 16:01
quelle

5 Antworten

10

Sie können die Funktion uniqid() verwenden, um eine eindeutige ID zu generieren

%Vor%     
John Magnolia 19.12.2011, 16:05
quelle
8

Sie könnten einen Zeitstempel im Datum verwenden, damit Sie nicht denselben Dateinamen / dieselbe Zeit zweimal erhalten.

Nicht genau, wie Ihr Code aussieht, aber Sie könnten so etwas tun:

%Vor%

Lesen Sie diese Dokumentation in den PHP-Dokumenten zu uniqid für weitere Informationen . Es verwendet die Datetime, um eine eindeutige Bezeichner-Zeichenfolge auszugeben.

    
Batkins 19.12.2011 16:04
quelle
3

Wenn Sie einen eindeutigen Namen benötigen, können Sie uniqid verwenden.

%Vor%

Seien Sie jedoch gewarnt, dass es nur auf einer Maschine einmalig ist, dh es kann dieselbe Sache erzeugen, wenn Sie es gleichzeitig auf zwei verschiedenen Maschinen ausführen.

    
Alex Turpin 19.12.2011 16:06
quelle
1

Die beste Option IMO wäre es, sha1_file zu verwenden auf den Dateiinhalt. Dies würde nur kollidieren, wenn es das gleiche Bild oder eine Hash-Kollision ist, die eine 1 zu 2 ^ 160 Chance ist. Sie können vermeiden, doppelte Bilder auf diese Weise zu haben, aber weil Sie einen Hash aus der Datei erstellen, kann es langsamer sein.

%Vor%


Eine andere Option ist tempnam Es wird eine temporäre Datei mit einem eindeutigen Namen erstellt.

>
  

Hinweis: Wenn PHP im angegebenen dir-Parameter keine Datei erstellen kann, greift er auf den Systemstandard zurück.

Grundbeispiel:

%Vor%

Beachten Sie auch: Wenn Sie den Dateinamen ändern, ist er möglicherweise nicht eindeutig.

    
Yamiko 05.03.2013 05:19
quelle
0

Ich denke, der einfachste Weg wäre, den Bildnamen in einem Datenbankfeld zu speichern und dann, wenn der Benutzer sein Bild hochlädt, um zu bestätigen, dass der Dateiname eindeutig ist, indem er ihn mit vorhandenen Dateinamen vergleicht. Sie können eine ajax / jquery-Schnittstelle verwenden, wenn Sie nicht möchten, dass der Benutzer warten muss, bis das Formular übermittelt wurde, um einen Fehler zu erhalten oder eine Aufforderung zur Änderung seines Dateinamens zu erhalten.

    
Robert 19.12.2011 16:04
quelle

Tags und Links