web应用 上传文件
用自定义form表单提交
html文件
index.html <form action="/update_file/" enctype="multipart/form-data" method="post"> #enctype="multipart/form-data" 是编码类型,指表单数据有多部分构成,既有文本数据,又有文件等二进制数据 {% csrf_token %} <input type="file" name="pic"> <input type="submit" value="上传"> </form>
视图函数
def update_file(request): pic=request.FILES['pic'] #或request.FILES.get('pic') 拿到文件pic对象
f = open(pic.name,'wb') #pic.name 为文件名(可自行拼接指定路径+文件名) pic.size 为文件大小
for i in pic.chunks(): #chunks()是一个生成器对象,遍历可得到文件内容,节约内存,分块读取写入
f.write(i)
f.close()
return HttpResponse('ok')
用django自带form组件提交
先写一个Form类
views.py class RegForm(forms.Form): pic = forms.FileField() # 会给name前边生成一个lable标签
再写视图函数
views.py
def upload(request): form_obj = RegForm() # 实例化一个对象 if request.method == "POST": # 实例化form对象的时候,把post提交过来的数据直接传进去 form_obj = RegForm(request.POST) # 调用form_obj校验数据的方法 if form_obj.is_valid(): return HttpResponse("成功") return render(request, "upload.html", locals())
在html中生成标签
<form action="/update_file/" enctype="multipart/form-data" method="post"> {% csrf_token %} {{ form_obj.pic }} # <input type="submit" value="上传"> </form>