Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何获取上载文件的文件路径?_Python_Django_Django Models_Django Uploads - Fatal编程技术网

Python 如何获取上载文件的文件路径?

Python 如何获取上载文件的文件路径?,python,django,django-models,django-uploads,Python,Django,Django Models,Django Uploads,我很难将文件的路径传递到名为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_f

我很难将文件的路径传递到名为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需要一个路径进入
文件到字符串(filepath)
。如果我试图传入file对象,它会给我一个错误:
“强制使用Unicode:需要字符串或缓冲区,找到InMemoryUploadedFile”

但是如果它是InMemoryPloadedFile类型,如何获取路径?我知道它存储在内存中,没有路径

我应该如何处理--我应该先保存文件对象,然后尝试访问它吗?
如果我保存文件,然后尝试
request.session['text']=file\u to\u string(file.name)
,它会给出一个
MissingFileError
,尽管文档说这应该给出文件名,包括从媒体根目录的相对路径


非常感谢。

尝试使用
文件到字符串(file.name)


文档:

尝试使用
文件到字符串(file.name)


文档:

请求。会话['text']=文件到字符串(filetosave.file.path)
应该做这个把戏

请求。会话['text']=文件到字符串(filetosave.file.path)
应该做这个把戏

尝试
请求。会话['text']=文件到字符串(fileobj.file)
@SebastianBurzy,谢谢,添加了models.request.session['text']=file_到_字符串(filetosave.file.path)应该执行以下操作trick@AvinashRaj谢谢,我试过了。但是
request.session['text']=file\u to_string(filetosave.file)
给出了“强制使用Unicode:需要字符串或缓冲区,FieldFile找到了”`@SebastianBurzyński谢谢,成功了!如果你将评论作为回答,我很乐意接受。再次感谢!请尝试
request.session['text']=file_to_string(fileobj.file)
@SebastianBurzyński,谢谢,添加了模型。request.session['text']=file_to_string(filetosave.file.path)应该执行以下操作trick@AvinashRaj谢谢,我试过了。但是
request.session['text']=file\u to_string(filetosave.file)
给出了“强制使用Unicode:需要字符串或缓冲区,FieldFile找到了”`@SebastianBurzyński谢谢,成功了!如果你将评论作为回答,我很乐意接受。再次感谢!