python Django之文件上传
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之文件上传的更多相关文章
- Python 基于Python实现Ftp文件上传,下载
基于Python实现Ftp文件上传,下载 by:授客 QQ:1033553122 测试环境: Ftp客户端:Windows平台 Ftp服务器:Linux平台 Python版本:Python 2.7 ...
- day56:django:csrf_token&文件上传
目录 1.csrf介绍 2.django实现csrf_token认证 3.django实现文件上传 csrf介绍 什么是csrf? csrf:跨站请求伪造.攻击者通过HTTP请求将数据传送到服务器,从 ...
- Django(十七)文件上传
http://www.cnblogs.com/wupeiqi/articles/5703697.html - 文件上传 - 普通上传 - 自定义页面上传按钮 ...
- Python Socket实现文件上传(TCP协议)
在TCP协议下通过socket模块实现文件上传 #!/usr/bin/env python # -*- coding: utf-8 -*- # desc: tcp_server_file_upload ...
- selenium+python自动化77-autoit文件上传
前言 关于非input文件上传,点上传按钮后,这个弹出的windows的控件了,已经跳出三界之外了,不属于selenium的管辖范围(selenium不是万能的,只能操作web上元素).autoit工 ...
- 框架----Django之文件上传
一.文件上传 1. 浏览器访问 http://127.0.0.1:8000/f1/ http://127.0.0.1:8000/f2/ 2. urls from django.conf.urls im ...
- Django的文件上传以及预览、存储
思路: 文件上传通过前端的input标签,input设置display:none属性. 内容显示需要让前端通过<img>标签读取图片内容,可以通过<label>标签连接< ...
- selenium+python自动化77-autoit文件上传【转载】
前言 关于非input文件上传,点上传按钮后,这个弹出的windows的控件了,已经跳出三界之外了,不属于selenium的管辖范围(selenium不是万能的,只能操作web上元素).autoit工 ...
- python模拟浏览器文件上传,csrf放行
服务器端视图函数 from django.shortcuts import render,HttpResponse from django.views.decorators.csrf import c ...
随机推荐
- parted分区及挂载实战操作大全
个人原创博客,转载请注明,否则要负法律责任 2017-09-29-14:46:25[root@localhost ~]# df -hFilesystem Size Used Avail Use% Mo ...
- 听说你买了 EOS ,连代码什么样都不知道?
最近发现很多人投资了 EOS,却并不关心 EOS 目前的开发进度和技术细节,如果你投资了 EOS, 还有一定的技术基础,那就更应该关心 EOS 的开发情况了,下面我们就从 EOS 的源代码说起: ...
- Java几种建立实例的方法
1.new something obj=new something(); 2.clone 根据现有的对象实例来建立里一个新对象实例. 只限于实现了java.lang.Cloneable接口的类.否 ...
- StringBUffer和StringBuilder详解
一.StringBUffer public final class StringBUffer extends Object implements Serializable,CharSequnc ...
- unittest自动化使用HTMLTestRunner的中文编码问题
1.使用unittest自动化测试框架,使用HTMLTestRunner生成测试报告,中文乱码问题! 如图 2.解决方法: 第一步:先在自己的测试脚本中添加 import sys reload(sys ...
- MongoDB系列三(Spring集成方案).
一.前言 MongoDB是最为流行的开源文档数据库之一.Spring Data MongoDB提供了三种方式在Spring应用中使用MongoDB: 通过注解实现对象-文档映射: 使用MongoTem ...
- java 5线程中 Semaphore信号灯,CyclicBarrier类,CountDownLatch计数器以及Exchanger类使用
先来讲解一下Semaphore信号灯的作用: 可以维护当前访问自身的线程个数,并提供了同步机制, 使用semaphore可以控制同时访问资源的线程个数 例如,实现一个文件允许的并发访问数. 请看下面 ...
- Redux----Regular的Redux实现整理
Regular的Redux实现整理 什么问题? 组件的树形结构决定了数据的流向,导致的数据传递黑洞 怎么解决? 所有组件都通过中介者传递共享数据 方案: 中介者: (function create ...
- 04_Python的数据类型1数值和字符串_Python编程之路
上一节我们通过一个helloworld程序学习python的一些简单操作,还有输入与输出 这节我们来讲Python的数据类型与变量的操作 Python的交互器 在讲这个之前,我要先讲一下python的 ...
- 【Spring系列】自己手写一个 SpringMVC 框架
参考文章 一.了解SpringMVC运行流程及九大组件 1.SpringMVC的运行流程 1)用户发送请求至前端控制器DispatcherServlet 2)DispatcherServlet收到请求 ...