如何获取上传文件的文件路径?
How do I get the filepath of an uploaded file?
我在将文件路径传递给名为 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.[=17= 的相对路径]
非常感谢。
尝试使用 file_to_string(file.name)
。
request.session['text'] = file_to_string(filetosave.file.path)
应该可以解决问题
我在将文件路径传递给名为 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.[=17= 的相对路径]
非常感谢。
尝试使用 file_to_string(file.name)
。
request.session['text'] = file_to_string(filetosave.file.path)
应该可以解决问题