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. parted分区及挂载实战操作大全

    个人原创博客,转载请注明,否则要负法律责任 2017-09-29-14:46:25[root@localhost ~]# df -hFilesystem Size Used Avail Use% Mo ...

  2. linux kexec内核引导

    linux kexec 介绍 kexec的功能是用一个运行的内核去运行一个新内核,就像运行一个应用程序一样.这种机制因为跳过了bootloader,可以实现系统的快速重启.另外kdump也是基于kex ...

  3. Go a lot of way but I go back to the original point

    I try a lot of blog platform and even construct my blog website. But I have to say I just want to ha ...

  4. selenium 基础(一)

    selenium安装 pip install selenium selenium操作浏览器原理 早期selenium 1.0 用的selenium RC, 后来selenum2集合了selenium1 ...

  5. (floyd)佛洛伊德算法

    Floyd–Warshall(简称Floyd算法)是一种著名的解决任意两点间的最短路径(All Paris Shortest Paths,APSP)的算法.从表面上粗看,Floyd算法是一个非常简单的 ...

  6. 【Python】 基于秘钥的对称加密

    [Crypto] 关于用python进行信息的加密,类似的解决方案有很多比如用base64编码进行encode,再或者是hashlib来进行hash.但是还缺少一种明明场景很简单的解决方案,就是把利用 ...

  7. Algorithm --> 筛法求素数

    一般的线性筛法 genPrime和genPrime2是筛法求素数的两种实现,一个思路,表示方法不同而已. #include<iostream> #include<math.h> ...

  8. Elasticsearch安装详解

    本文只介绍在windows上的安装和配置,其他安装和配置请参见官方文档 ES在windows上安装需下载zip安装包,解压后bin目录下有个 elasticsearch-service.bat 文件. ...

  9. RDD概念、特性、缓存策略与容错

    一.RDD概念与特性 1. RDD的概念 RDD(Resilient Distributed Dataset),是指弹性分布式数据集.数据集:Spark中的编程是基于RDD的,将原始数据加载到内存变成 ...

  10. 【MySql系列】MySql踩坑系列

    问题一:远程登录报错Host '192.168.181.201' is not allowed to connect to this MySQL server 解决: 问题二:MySql access ...