python Django之文件上传

使用Django框架进行文件上传共分为俩种方式

一、方式一

通过form表单进行文件上传
#=========================================FORM表单上传文件========================================
def f1(request):
#定义f1上传函数
if request.method=='GET':
#如果是以GET请求
return render(request,'f1.html')
#返回html模板
else:
#否则
import os
#导入模块
file_obj=request.FILES.get('fafafa')
#通过文件的方式获取文件
f=open(os.path.join('static',file_obj.name),'wb')
#打开一个文件创建一个文件句柄,写的模式打开
for chunk in file_obj.chunks():
#循环对象(chunks是块 代表大小的意思)
f.write(chunk)
#循环获得对象并写到文件中
f.close()
#通过文件句柄,关闭文件
return render(request,'f1.html')
#返回到html模板

form表单上传文件

========================form表单html============================
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/f1/" method="POST" enctype="multipart/form-data">
{% csrf_token %}
<p><input type="text" name="user"></p>
<p><input type="file" name="fafafa"></p>
<p><input type="submit" value="提交"></p>
</form>
</body>
</html>
一、方式二

通过form组件进行文件上传
#======================================Form组件上传文件========================================
class F2Form(Form):
#定义一个上传类
user=fields.CharField()
#字段是字符串类型
fafafa=fields.FileField()
#字段是文件类型 def f2(request):
#定义一个f2上传文件的函数
import os
#导入模块
if request.method=='GET':
#如果请求方式GET
obj=F2Form()
#实例化一个对象
return render(request,'f2.html',{'obj':obj})
#携带obj对象返回html
else:
#否则
obj=F2Form(data=request.POST,files=request.FILES)
#实例化对象obj前端标签input获取的数据以request.POST接收,文件信息以request.FILES接收
if obj.is_valid():
#通过form组件进行校验如果校验成功就执行下边代码
print(obj.cleaned_data.get('fafafa').name)
#打印文件名称
print(obj.cleaned_data.get('fafafa').size)
#打印文件大小
f=open(os.path.join('static',obj.cleaned_data.get('fafafa').name),'wb')
#打开文件并创建文件句柄,以写的模式打开
for chunk in request.FILES.get('fafafa').chunks():
#循环读取文件对象的内容
f.write(chunk)
#循环写入到文件中
f.close()
#通过文件句柄将文件关闭
return render(request,'f2.html',{'obj':obj})
#携带obj对象返回html模板

form组件上传文件

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="POST" action="/f2/" enctype="multipart/form-data">
{% csrf_token %}
<p>{{ obj.user }}</p>
<p>{{ obj.fafafa }}</p>
<input type="submit" value="提交" />
</form>
</body>
</html>

python Django之文件上传的更多相关文章

  1. Python 基于Python实现Ftp文件上传,下载

    基于Python实现Ftp文件上传,下载   by:授客 QQ:1033553122 测试环境: Ftp客户端:Windows平台 Ftp服务器:Linux平台 Python版本:Python 2.7 ...

  2. day56:django:csrf_token&文件上传

    目录 1.csrf介绍 2.django实现csrf_token认证 3.django实现文件上传 csrf介绍 什么是csrf? csrf:跨站请求伪造.攻击者通过HTTP请求将数据传送到服务器,从 ...

  3. Django(十七)文件上传

    http://www.cnblogs.com/wupeiqi/articles/5703697.html - 文件上传        - 普通上传        - 自定义页面上传按钮        ...

  4. Python Socket实现文件上传(TCP协议)

    在TCP协议下通过socket模块实现文件上传 #!/usr/bin/env python # -*- coding: utf-8 -*- # desc: tcp_server_file_upload ...

  5. selenium+python自动化77-autoit文件上传

    前言 关于非input文件上传,点上传按钮后,这个弹出的windows的控件了,已经跳出三界之外了,不属于selenium的管辖范围(selenium不是万能的,只能操作web上元素).autoit工 ...

  6. 框架----Django之文件上传

    一.文件上传 1. 浏览器访问 http://127.0.0.1:8000/f1/ http://127.0.0.1:8000/f2/ 2. urls from django.conf.urls im ...

  7. Django的文件上传以及预览、存储

    思路: 文件上传通过前端的input标签,input设置display:none属性. 内容显示需要让前端通过<img>标签读取图片内容,可以通过<label>标签连接< ...

  8. selenium+python自动化77-autoit文件上传【转载】

    前言 关于非input文件上传,点上传按钮后,这个弹出的windows的控件了,已经跳出三界之外了,不属于selenium的管辖范围(selenium不是万能的,只能操作web上元素).autoit工 ...

  9. python模拟浏览器文件上传,csrf放行

    服务器端视图函数 from django.shortcuts import render,HttpResponse from django.views.decorators.csrf import c ...

随机推荐

  1. python爬微信公众号前10篇历史文章(6)-话说http cookies

    早期Web开发面临的最大问题之一是如何管理状态.简言之,服务器端没有办法知道两个请求是否来自于同一个浏览器.这是cookies的起源. 什么是cookie? A cookie is a small s ...

  2. CentOS7.2下Nginx的使用

    Nginx的启动 指定配置文件的方式启动 nginx -c /etc/nginx/nginx.conf 对于yum安装的nginx,使用systemctl命令启动 systemctl start ng ...

  3. java排序算法(六):直接插入排序

    java排序算法(六):直接插入排序 直接插入排序的基本操作就是将待的数据元素按其关键字的大小插入到前面的有序序列中 直接插入排序时间效率并不高,如果在最坏的情况下,所有元素的比较次数的总和为(0+1 ...

  4. SpringAOP-JDK 动态代理和 CGLIB 代理

    在 Spring 中 AOP 代理使用 JDK 动态代理和 CGLIB 代理来实现,默认如果目标对象是接口,则使用 JDK 动态代理,否则使用 CGLIB 来生成代理类. 1.JDK 动态代理 那么接 ...

  5. 解决C盘中的文件不能修改问题

    在不能修改的文件右击属性>点击安全>编辑>点击用户>完全控制. 步骤如图: 最后点击确定.

  6. C#基础(二)拆箱与装箱,循环与选择结构,枚举

    一.装箱和拆箱 装箱是将值类型转换为引用类型 eg: Int a=5; Object  o=a; 拆箱是将引用类型转换为值类型 eg: Int a=5; Object  o=a; Int b=(int ...

  7. CSS服务器字体

    1,首先要下载ttf文件 推荐下载网站:  https://www.dafont.com/ 2,写css样式 3,服务器字体 font-family:自己随便取个名字就行 注意url里的ttf文件和f ...

  8. C语言助教批改

    作业批改 每次作业批改后写一篇作业点评,助教轮流写作业总结.(总结分工老师安排). 每个助教点评自己负责的同学博客,点评要详细,不能只有一句话. 有比较优秀博客请或典型问题推荐到qq群,并发给写总结助 ...

  9. bug终结者 团队作业第四、五周

    bug终结者 团队作业第四.五周 博客编辑者:20162322朱娅霖 本周学习任务: 团队协作完成<需求规格说明书> 工作流程 第四周 团队成员各自完成蓝墨云班课中<需求规格说明书& ...

  10. Beta敏捷冲刺每日报告——Day3

    1.情况简述 Beta阶段Scrum Meeting 敏捷开发起止时间 2017.11.4 00:00 -- 2017.11.5 00:00 讨论时间地点 2017.11.4 晚9:30,电话会议会议 ...