2016-08-04 5 views
0

это то, что я пытаюсь сделать. Я создал метод, который будет загружать файл, однако я хотел бы изменить его имя файла. Мне удалось изменить имя файла, но я также потерял расширение.изменить имя файла загруженного файла django

это как мои коды выглядят:

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" 

но файл выглядит 324329432840932 только тогда, когда я ожидал что-то вроде 324329432840932.jpg

+1

'str (доставка)' должно быть 'str (deliveryId)', правильно? И вы можете добавить '.jpg' к имени файла. –

+0

ну, я тоже сделал это, но не все файлы .jpg только. некоторые из них: .gif, .pdf и т. д. –

+1

Вы можете разделить исходное имя файла на '.' и сохранить расширение. А затем добавьте его в новое имя файла. –

ответ

0

Это лучше использовать splitext вместо метода split():

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)  
Смежные вопросы