Django框架(十五:表单中图片的上传)
2018-11-07 19:44
204 查看
图片的上传,就是后台获取表单传过来的图片并保存。需要实现两部分,一部分是将图片的路径保存到数据库,另一部分是把图片文件上传到后台。
下面来执行具体的操作:
- 由于上传图片时默认保存在根目录下的,所以需在settings.py文件中配置图片上传的路径
- 定义一个Model类,在Model中声明一个用于保存图片地址的字段,放在数据库的表中;(此处不再展示代码)
- 在html文件中添加上传图片的表单。input的type值必须为file
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>图片上传</title> </head> <body> <form action="/upload/" method="post" enctype="multipart/form-data"> {# application/x-www-form-urlencoded: username='123'&password='456' 适合文本 #} {# multipart/form-data: 以指定的分隔符对上传数据进行分割 适合二进制文件 #} {# 上传图片相当于上传数据,一定要使用POST请求,并且要指定一个属性enctype #} {% csrf_token %} <input type="file" name="picture"> <button type="submit">上传</button> </form> <img src="/static/media/{{ img.pic_url }}" alt=""> </body> </html>
- 路由就自己配置了,接下来在views.py文件中代码实现,具体的作用,已经注释
def uploadimg(request): if request.method == 'GET': # img = PictureModel.objects.get(id=18) # return render(request, 'index.html', {'img': img}) return render(request, 'index.html') else: # 需要从表单input中,获取上传的文件对象(图片) pic = request.FILES.get('picture') # 1. 创建Model对象,保存图片路径到数据库 model = PictureModel() model.pic_url = pic.name model.save() # 2. 开始处理图片,将图片写入到指定目录。(/static/media/images/) # 拼接图片路径 url = settings.MEDIA_ROOT + 'images/' + pic.name with open(url, 'wb') as f: # pic.chunks()循环读取图片内容,每次只从本地磁盘读取一部分图片内容,加载到内存中,并将这一部分内容写入到目录下,写完以后,内存清空;下一次再从本地磁盘读取一部分数据放入内存。就是为了节省内存空间。 for data in pic.chunks(): f.write(data) return HttpResponse('图片上传成功')阅读更多
相关文章推荐
- Android 网络请求框架,包涵get,post请求,from表单上传图片,基于okhtt封装的图片上传
- Django框架(十六:上传图片到自定义目录下)
- 基于ASP.NET+EasyUI框架实现图片上传提交表单功能(js提交图片)
- 基于ASP.NET+easyUI框架实现图片上传功能(表单)
- SSM框架form表单上传图片接不到值问题
- 表单设置action,target指向隐藏的框架,使页面停留在本页,实现无刷新上传图片
- 基于ASP.NET+easyUI框架实现图片上传功能(表单)
- 基于asp.net+ easyui框架,js提交图片,实现先上传图片再提交表单
- 基于asp.net+ easyui框架,js提交图片,实现先上传图片再提交表单
- 实现springmvc多图片上传到服务器并且保存到数据库,提交方式:表单提交 ,SSM框架
- 基于ASP.NET+EasyUI框架实现图片上传提交表单功能(js提交图片)
- 单张图片上传表单提交
- laravel框架 上传图片问题解析
- 使用HttpClient MultipartEntity 上传图片 类似于表单提交
- myeclipse jaxws框架写 webservice 之上传图片方法
- 如何用拦截表单的方法上传图片?
- bootstrap 图片上传框架
- Webuploader 上传图片与form表单(二)
- AFN 3.0 表单上传图片和文字 iOS 7.0的一些问题
- Django框架学习笔记(13.获取单表单数据的三种方式)