Ich denke, mit UUID wird der Dateiname so lange machen. Dies kann auch Ihnen helfen: -
import os, random, string
length = 13
chars = string.ascii_letters + string.digits + '[email protected]#$%^&*()'
random.seed = (os.urandom(1024))
a = ''.join(random.choice(chars) for i in range(length))
Hinweis: - Stellen Sie den Längenparameter nach Ihrem Wunsch.
filename = '%s%s' % (Yourfilename,str(a))
ändern models.py als:
fileName = CharField(max_length=10, blank=True,unique=True)
ändern views.py als:
try:
filename = filename
storeFileName = models.objects.create(fileName=filename)
except Exception,e:
import os, random, string
length = 13
chars = string.ascii_letters + string.digits + '[email protected]#$%^&*()'
random.seed = (os.urandom(1024))
a = ''.join(random.choice(chars) for i in range(length))
filename = '%s%s' % (Yourfilename,str(a))
storeFileName = models.objects.create(fileName=filename)
können Sie nicht unique=True
für fileField
setzen diese Fehler in Django könnte es funktionieren wird wie folgt:
Offenbar, was passiert ist das: Wenn die Datei bereits vorhanden ist, erhält die neue Datei den Namen < >., Wobei <> die Anzahl der Unterstriche ist, die erforderlich sind, um den Namen eindeutig zu machen. Wenn zum Beispiel eine Datei namens foo.png mehrfach hochgeladen wird, heißt die zweite Datei foo_.png, die dritte foo __. Png und so weiter. Dies sollte jedoch wahrscheinlich dokumentiert werden. Ich bin mir nicht sicher, ob diese Umbenennung im Admin-Code oder im Model-Code passiert.
So haben Sie vielleicht nur eine Option, um den Dateinamen separat abzuspeichern und vor dem Hochladen der Datei einzuchecken.
Thanks getan wird, aber wenn Datei nicht existiert, möchte ich den ursprünglichen Namen behalten. Was soll ich tun, wenn 2 den Zugriff gleichzeitig mit dem gleichen Dateinamen verarbeitet ... Ist es möglich, den Test der vorhandenen Datei atomar zu machen? – Bob5421
dann sollten Sie im Modell fileField als eindeutiges Feld hinzufügen. Und im Skript versuchen Sie, Datei zu speichern, wenn die Datenbank, wenn Sie doppelt erhalten haben, können Sie Ausnahme schreiben und Dateinamen ändern und dann speichern. –
Überprüfen Sie meine letzte Bearbeitung @ Bob5421 –