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()

模型.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 的相对路径。

提前非常感谢。

4

2 回答 2

0

尝试使用file_to_string(file.name).

文档:https ://docs.djangoproject.com/en/1.10/ref/models/fields/#django.db.models.fields.files.FieldFile.name

于 2016-09-19T13:13:41.590 回答
0

request.session['text'] = file_to_string(filetosave.file.path)应该做的伎俩

于 2016-09-19T13:16:13.080 回答