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 空格转换为 "+" 加号,但不对特殊字符编码。

 

 

 

 

 

你可能感兴趣的:(django)