2016-09-19 12 views
1

ファイルのパスをTextractというライブラリに渡すことができません。ここでアップロードされたファイルのファイルパスを取得するにはどうすればよいですか?

def file_to_string(filepath): 
    text = textract.process(filepath) 
    print text 
    return text 

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)に行くためのパスを期待

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() 
で私のアップロードフォームです。ファイルオブジェクトを渡そうとすると、エラー番号 "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'] =ファイル_to_string(fileobj.file)' –

+0

@SebastianBurzyński、ありがとう、モデルが追加されました。 – aaravam

答えて

0

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

関連する問題