文件上傳的幾種方法
阿新 • • 發佈:2018-09-01
如果 文件中 uri add 臨時文件 div -c 內存 mon
一、加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‘)
二、.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>
文件上傳的幾種方法