如何从request.FILES获取文件名?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从request.FILES获取文件名?相关的知识,希望对你有一定的参考价值。
如何从Django中的request.FILES获取文件名?
def upload(request):
if request.method == 'POST':
form = UploadForm(request.POST, request.FILES)
if form.is_valid():
upload = Upload()
upload.timestamp = datetime.datetime.now()
save_instance(form, upload)
我尝试使用它但它不起作用:
if 'filename' in request.FILES:
filename = request.FILES['filename']
答案
request.FILES['filename'].name
来自request
文档。
如果您不知道密钥,则可以迭代文件:
for filename, file in request.FILES.iteritems():
name = request.FILES[filename].name
另一答案
file = request.FILES['filename']
file.name # Gives name
file.content_type # Gives Content type text/html etc
file.size # Gives file's size in byte
file.read() # Reads file
另一答案
注意如果您使用的是python 3.x:
request.FILES
是一个像对象一样的多值字典,它通过上传文件按钮保存文件。在您的html代码中,按钮的名称(type =“file”)是“myfile”,因此“myfile”将成为此词典中的键。如果您上传了一个文件,那么此密钥的值将只有一个,如果您上传了多个文件,那么您将拥有该特定密钥的多个值。如果您使用request.FILES['myfile']
,您将获得第一个或最后一个值(我不能肯定地说)。如果您只上传了一个文件,这很好,但是如果您想获取所有文件,您应该这样做:
list=[] #myfile is the key of a multi value dictionary, values are the uploaded files
for f in request.FILES.getlist('myfile'): #myfile is the name of your html file button
filename = f.name
list.append(filename)
当然,人们可以将整个事情挤在一条线上,但这很容易理解
另一答案
答案可能已经过时,因为name
类有一个UploadedFile
属性。见:Uploaded Files and Upload Handlers (Django docs)。因此,如果您正确地将表单与FileField
绑定,则访问应该像以下一样简单:
if form.is_valid():
form.cleaned_data['my_file'].name
以上是关于如何从request.FILES获取文件名?的主要内容,如果未能解决你的问题,请参考以下文章