2016-08-04 6 views
0

dies ist, was ich versuche zu tun. Ich habe eine Methode erstellt, die eine Datei hochlädt. Ich möchte jedoch den Dateinamen ändern. Ich konnte den Dateinamen ändern, aber ich verlor auch die Erweiterung.Dateiname der hochgeladenen Datei ändern django

dies ist, wie meine Codes aussehen:

def upload_delivery_to_media(self,deliveryId, deliveryFile): 

    with open('/app/media/TaskDelivery/'+str(delivery), 'wb+') as destination: 
     for chunk in deliveryFile.chunks(): 
      destination.write(chunk) 

    return "Done uploading" 

aber die Datei sieht aus wie 324329432840932 nur, wenn ich so etwas wie 324329432840932.jpg

+1

'str (Lieferung)' sollte 'str (deliveryId)' sein, oder? Und Sie können ein '.jpg' an den Dateinamen anhängen. –

+0

Nun, ich habe es auch getan, aber nicht alle Dateien sind .jpg nur. Einige davon sind .gif, .pdf usw. –

+1

Sie können den ursprünglichen Dateinamen in '.' aufteilen und die Erweiterung speichern. Und dann fügen Sie es an Ihren neuen Dateinamen an. ja –

Antwort

0

erwarten Es ist besser splitext statt Methode split() zu verwenden:

import os 
from django.conf import settings 

def upload_delivery_to_media(self, delivery_id, delivery_file): 
    _, ext = os.path.splitext(delivery_file.name) 
    with open(os.path.join(settings.MEDIA_ROOT, 'TaskDelivery', '{}{}'.format(delivery_id, ext)), 'wb') as destination: 
     for chunk in delivery_file.chunks(): 
      destination.write(chunk)