2016-09-19 133 views
1

我很難將文件的路徑傳遞給名爲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相對路徑。

非常感謝。

+0

請出示你的模型也是如此。 – sebb

+0

嘗試'request.session ['text'] = file_to_string(fileobj.file)' –

+0

@SebastianBurzyński,謝謝,添加了模型。 – aaravam

回答

0

request.session['text'] = file_to_string(filetosave.file.path)應該做的伎倆