2013-07-26 7 views
5

1. Wird die encrypt_name Option des Codeigniters überprüft, ob sie eindeutig ist?codeigniter upload encrypt_name uniqueness

Ich weiß, dass die overwrite Option wichtig ist. Wenn overwriteTRUE ist, würde es überschreiben, und wenn es FALSE ist, würde es die Datei umbenennen, indem eine Zahl am Ende des Namens hinzufügt.

Die Frage ist: Wird es den verschlüsselten Namen regenerieren, bis Sie einen eindeutigen Namen, auch wenn overwriteTRUE ist zu finden? Ich frage das, weil es offensichtlich ist, dass wenn wir verschlüsselten Namen wollen, wir natürlich nicht überschreiben wollen.

Das Problem mit dem Umbenennen durch Hinzufügen einiger Zahlen ist, dass es die Größe von Dateinamen beschädigt. Viele Dateien haben 32 Zeichen Dateinamen, und einige haben möglicherweise 33 Zeichen Dateinamen, die die Koordination korrumpieren.

2. Ist es möglich, ein immer doppelt vorhandenes Ergebnis zu generieren?

+0

Wenn 'overwrite' auf' true' gesetzt ist, ersetzt der codierte Name, wenn er mit einer vorhandenen Datei übereinstimmt, die frühere Datei, andernfalls wird die aktuell hochgeladene Datei umbenannt. –

+0

Entschuldigung, ich meinte auch wenn überschreiben wenn 'FALSE'. Bearbeitete den q. Vielen Dank für Ihre Nachricht. –

+0

Ja, auch wenn es mit einer bereits hochgeladenen Datei übereinstimmt, die fast unmöglich ist, wird die Datei, die hochgeladen wird, umbenannt. –

Antwort

6

Da Codenigniter md5(uniqid(mt_rand())) verwendet, um den verschlüsselten Dateinamen zu generieren, würde ich vermuten, dass Sie Ihre Antwort in der PHP docs for uniquid finden.

Kurze Antwort (für 2.) wäre: vielleicht, aber wahrscheinlich nicht.

Und um Ihre erste Frage zu beantworten: Nein, CI generiert keinen neuen verschlüsselten Dateinamen, wenn es bereits existiert. Es fügt eine Nummer am Ende des Namens hinzu.

Ein kurzer Blick auf den Quellcode von /libraries/Upload.php, Zeile 415, hilft.

Verwandte Themen