django 文件上传

模板文件:

<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 空格转换为 "+" 加号,但不对特殊字符编码。
原文地址:https://www.cnblogs.com/tianyajuanke/p/3582563.html