自定义表单上传图片
以下代码为表单上传图片实现步骤
1.展示图片上传的表单
正则匹配展示表单的urls
# 展示表单 url(r'^upload/$', views.upload),
展示表单的视图
# 上传图片的表单 def upload(request): return render(request, 'Book/upload.html')
展示表单的模板
- form:
post请求
、enctype="multipart/form-data"
- input:type为
file
- CSRF安全验证
- form:
<form action="/recv/" method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="pic">
<br>
<br>
<input type="submit" value="上传">
</form>
2.接收并处理客户端上传的图片
需求:图片保存到项目静态文件中,并把路径保存到数据库表中
正则匹配接收图片的urls
# 接收图片 url(r'^recv/$', views.recv),
接收并处理图片的视图
request对象的
FILES
属性用于接收请求的文件from django.conf import settings # 接收图片 def recv(request): # 从请求报文中获取图片的网络数据 picture = request.FILES.get('pic') # 获取图片名字 name = picture.name # 拼接图片保存在服务器路径 path = '%s/Book/%s'%(settings.MEDIA_ROOT, name) # 将图片网络数据写入到path with open(path, 'wb') as pic: # 遍历图片网络数据 for c in picture.chunks(): # 写入图片网络数据 pic.write(c) # 将图片路径写入到数据库 pictureinfo = PictureInfo() pictureinfo.path = 'Book/%s'%name pictureinfo.save() return HttpResponse('OK!')