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. js正则《转载收藏》

    \:转义字符.'\\n'匹配\n ^:开始位置.'^[0-9]'匹配以数字开头的字符,可以匹配'88DC',不可匹配'DC88' $:结束位置.'[0-9]$'匹配以数字结尾的字符,可以匹配'ab12 ...

  2. 关于移动端的UI事件分类

    1. click事件 单击事件,类似于PC端的click,但在移动端中,连续click的触发有200ms ~ 300ms的延迟 2. touch类事件 触摸事件,有touchstart touchmo ...

  3. 用Arduino制作一个二维码显示器

    先上图 场景是这样的, 这几天给CS系统做一个微信支付的功能,  但是生成的二维码是在前台的电脑上..不可能让用户跑到前台的电脑上去扫描...然后拿出了N年前买的Arduino 做了一个二维码显示器. ...

  4. 【Docker】 Swarm简单介绍

    [Swarm] Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源.Swarm ...

  5. 【Linux】 环境变量与shell配置&执行

    ■ 变量与环境变量 shell环境通常存在很多变量,变量可以通过echo $VAR或${VAR}的方式查看.set命令可以查看当前环境中的所有变量(包括一般的自定义变量和环境变量) 变量的设置通过简单 ...

  6. [css 揭秘]:CSS揭秘 技巧(二):多重边框

    我的github地址:https://github.com/FannieGirl/ifannie/ 源码都在这上面哦! 喜欢的给我一个星吧 多重边框 问题:我们通常希望在css代码层面以更灵活的方式来 ...

  7. 使用ADO.NET查询和操作数据

    使用ADO.NET查询和操作数据 StringBuilder类: 用来定义可变字符串StringBuilder sb = new StringBuilder("");//追加字符串 ...

  8. [LTR] 信息检索评价指标(RP/MAP/DCG/NDCG/RR/ERR)

    一.RP R(recall)表示召回率.查全率,指查询返回结果中相关文档占所有相关文档的比例:P(precision)表示准确率.精度,指查询返回结果中相关文档占所有查询结果文档的比例: 则 PR 曲 ...

  9. python全栈学习--day3

    一.基础数据类型 基础数据类型,有7种类型,存在即合理. 1.int 整数 主要是做运算的 .比如加减乘除,幂,取余  + - * / ** %...2.bool 布尔值 判断真假以及作为条件变量3. ...

  10. 集大1513 & 1514班 软件工程第二次作业评分与点评

    谢谢按时完成作业的同学. 请大家在今后的作业中多思考,认真完成并注意作业的原创性. 学号 作业标题 作业地址 提交日期 分数 201521121087 微信APP简要分析 http://www.cnb ...