2016-09-19 10 views
1

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.

+0

tun sollten, als auch Ihr Modell Bitte zeigen. – sebb

+0

versuchen 'request.session ['text'] = file_to_string (Dateiobj.file)' –

+0

@ SebastianBurzyński, danke, fügte die Modelle hinzu. – aaravam

Antwort

0

request.session['text'] = file_to_string(filetosave.file.path) den Trick

Verwandte Themen