模板文件:服務器
<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>
視圖函數:app
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 值)。其它屬性值有:post
值 | 描述 |
---|---|
application/x-www-form-urlencoded | 在發送前編碼全部字符(默認) |
multipart/form-data | 不對字符編碼。編碼 在使用包含文件上傳控件的表單時,必須使用該值。url |
text/plain | 空格轉換爲 "+" 加號,但不對特殊字符編碼。 |