Как получить путь к файлу для загруженного файла?
У меня проблемы с передачей пути к файлу в библиотеку Textract.
def file_to_string(filepath):
text = textract.process(filepath)
print text
return text
Вот моя форма загрузки в views.py
if request.method == 'POST':
upload_form = UploadFileForm(request.POST, request.FILES)
if upload_form.is_valid():
file = request.FILES['file']
filetosave = File(file=file, filename=file.name)
filetosave.save()
if validate_file_extension(file):
request.session['text'] = file_to_string(file) # something in here
else:
upload_form=UploadFileForm()
models.py
class File(models.Model):
filename = models.CharField(max_length=200)
file = models.FileField(upload_to='files/%Y/%m/%d')
upload_date=models.DateTimeField(auto_now_add =True)
status = models.CharField(max_length=200)
def __unicode__(self):
return self.filename
Теперь Textract ожидает путь в file_to_string(filepath)
, Если я пытаюсь передать объект файла, это дает мне ошибку: "coercing to Unicode: need string or buffer, InMemoryUploadedFile found"
,
Но если это тип InMemoryUploadedFile, как мне получить путь? Я понимаю, что это хранится в памяти и не имеет пути.
Как мне справиться с этим - сначала сохранить объект файла, а затем попытаться получить к нему доступ? Если я сохраню файл, а затем попробую request.session['text'] = file_to_string(file.name)
это дает MissingFileError
, хотя в документах сказано, что это должно дать имя файла, включая относительный путь от MEDIA_ROOT.
Заранее большое спасибо.
2 ответа
request.session['text'] = file_to_string(filetosave.file.path)
должен сделать трюк
Попробуйте использовать file_to_string(file.name)
,
Документы: https://docs.djangoproject.com/en/1.10/ref/models/fields/