-----------------------view.py-----------------------
from django import forms
from django.forms import fields
class UploadForm(forms.Form):
user = fields.CharField()
img = fields.FileField()
def upload(request):
if request.method == 'GET':
return render(request,'upload.html')
else:
# 基于Form做的文件上传
# obj = UploadForm(request.POST,request.FILES)
# if obj.is_valid():
# user = obj.cleaned_data['user']
# img = obj.cleaned_data['img']
# 普通版的文件上传
user = request.POST.get('user')
img = request.FILES.get('img') # 获取传过来的文件
# img是对象(文件大小,文件名称,文件内容...)
print(img.name,img.size)
f = open(img.name,'wb') # 把上传的文件写入本地
for line in img.chunks(): # 文件不会一次性全部上传,返回的是迭代器,一点一点取
f.write(line)
return HttpResponse('ok')
-----------------------html----------------------------
<body>
<form action="/upload/" method="post" enctype="multipart/form-data">
{% csrf_token %}
<p><input type="text" name="user"></p>
<div style="position: relative">
<a href="">上传</a>
<p><input type="file" name="img" style="opacity: 0;position: absolute;top: 0px;left: 0px"></p>
</div>
<p><input type="submit" value="提交"></p>
</form>
</body>
-------------------------urls.py----------------------
urlpatterns = [
path('admin/', admin.site.urls),
path('upload/', views.upload),
]