Ich habe Schwierigkeiten, den Pfad einer Datei zu einer Bibliothek namens Texttract zu übergeben.Wie erhalte ich den Dateipfad einer hochgeladenen Datei?
def file_to_string(filepath):
text = textract.process(filepath)
print text
return text
Hier ist meine Upload-Formular in 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
Jetzt Textract ein Weg in file_to_string(filepath)
gehen erwartet. Wenn ich versuche, das Dateiobjekt zu übergeben, gibt es einen Fehler: "coercing to Unicode: need string or buffer, InMemoryUploadedFile found"
.
Aber wenn es ein InMemoryUploadedFile-Typ ist, wie bekomme ich den Pfad? Ich verstehe, dass dies im Speicher gespeichert ist und keinen Pfad hat.
Wie soll ich damit umgehen - sollte ich das Dateiobjekt zuerst speichern und dann versuchen, darauf zuzugreifen? Wenn ich die Datei speichern und dann versuchen request.session['text'] = file_to_string(file.name)
gibt es eine MissingFileError
, obwohl die Dokumente sagen, dass dies den Namen der Datei einschließlich der relativen Pfad von MEDIA_ROOT geben sollte.
Vielen Dank im Voraus.
tun sollten, als auch Ihr Modell Bitte zeigen. – sebb
versuchen 'request.session ['text'] = file_to_string (Dateiobj.file)' –
@ SebastianBurzyński, danke, fügte die Modelle hinzu. – aaravam