模板文件:
<form method='post' action='/script/upload/' enctype="multipart/form-data" accept-charset="utf-8">
{% csrf_token %}
<input type='file' name='file' />
<input type='submit' value='上传' />
</form>
视图函数:
def upload(request):
def handle_uploaded_file(f):
destination = open('gamepost.xml', 'w')
for chunk in f.chunks():
destination.write(chunk)
destination.close()
if request.method == 'POST':
handle_uploaded_file(request.FILES['file'])
return HttpResponse('游戏公告更新成功!')
form 表单里有一句 enctype="multipart/form-data",在上传文件的表单里必须要有这个。enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。
默认地,表单数据会编码为 "application/x-www-form-urlencoded"。就是说,在发送到服务器之前,所有字符都会进行编码(空格转换为 "+" 加号,特殊符号转换为 ASCII HEX 值)。其它属性值有:
值 | 描述 |
---|---|
application/x-www-form-urlencoded | 在发送前编码所有字符(默认) |
multipart/form-data |
不对字符编码。 在使用包含文件上传控件的表单时,必须使用该值。 |
text/plain | 空格转换为 "+" 加号,但不对特殊字符编码。 |