1、
加
enctype="multipart/form-data"
<!DOCTYPE html>
<html>
<head>
<title>test</title>
</head>
<body>
<form action="/test/" method="post" enctype="multipart/form-data"> <!--若是不加這個的話,提交的數據會以鍵值對提交-->
{% csrf_token %}
文件:<input type="file" name='test'><br>
<input type="submit" value="提交">
</form>
</body>
</html>
def test(request):
if request.method == 'POST':
file = request.FILES.get('test')
with open(file.name, 'wb') as f:
for line in file:
f.write(line)
return render(request, 'test.html')
2、
.chunks()
def upload(request):
"""
保存上傳文件前,數據須要存放在某個位置。默認當上傳文件小於2.5M時,django會將上傳文件的所有內容讀進內存。從內存讀取一次,寫磁盤一次。
但當上傳文件很大時,django會把上傳文件寫到臨時文件中,而後存放到系統臨時文件夾中。
:param request:
:return:
"""
if request.method == "POST":
# 從請求的FILES中獲取上傳文件的文件名,file爲頁面上type=files類型input的name屬性值
filename = request.FILES["file"].name
# 在項目目錄下新建一個文件
with open(filename, "wb") as f:
# 從上傳的文件對象中一點一點讀
for chunk in request.FILES["file"].chunks():
# 寫入本地文件
f.write(chunk)
return HttpResponse("上傳OK")
<!DOCTYPE html>
<html>
<head>
<title>test</title>
</head>
<body>
<form action="/test/" method="post">
{% csrf_token %}
文件:<input type="file" name='test'>
<input type="submit" value="提交">
</form>
</body>
</html>