2016-02-09 2 views
2

Я использую этот код:файл загружен с именем в питона Джанго

def saveUploadedInventory(self, inventory_file,user_id): 
     with open('uploaded_inventory_sheet.csv','wb+') as destination: 
      for chunk in inventory_file.chunks(): 
       destination.write(chunk) 

     reader = csv.reader(open('uploaded_inventory_sheet.csv','rb')) 

файл с этим именем uploaded_inventory_sheet.csv загружен успешно

, но я хочу, чтобы загрузить тот же файл в другой каталог с его фактическое имя, которое поступает от клиента.

Я стараюсь следующий код:

def saveUploadedInventory(self, inventory_file,user_id): 
    with open(''.join(inventory_file),'wb+') as destination: 
     for chunk in inventory_file.chunks(): 
      destination.write(chunk) 
    reader = csv.reader(open('inventory_file','rb')) 

но Он дает следующее сообщение об ошибке:

Exception Type: IOError

Exception Value: [Errno 36] File name too long: 'Se .. .. . .

+0

Какой выход из '' .join (inventory_file)? Это похоже на что-то очень длинное, когда то, что вы на самом деле хотите, - это просто имя. – skyler

+0

Я получаю ошибку 'имя файла слишком долго', а затем все данные файла печатаются там –

ответ

1

Вы хотите открыть имя файла, а не присоединиться к его содержание:

def saveUploadedInventory(self, inventory_file,user_id): 
    with open(inventory_file.name,'wb+') as destination: 
     for chunk in inventory_file.chunks(): 
      destination.write(chunk) 
    reader = csv.reader(open(inventory_file.name,'rb')) 

open берет имя файла, который вы хотите открыть, поэтому вы должны использовать имя, указанное в name Поле inventory_file.

От UploadedFile documentation:

UploadedFile.name

The name of the uploaded file (e.g. my_file.txt). 
+0

и как записать этот файл в другой каталог, а не в проект foder –

+1

Чтобы писать в другой папке' с открытым (/ path/to/inventory_file .name, 'wb +') в качестве адресата'. – itzMEonTV

Смежные вопросы