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>
时间: 2024-10-12 20:10:47

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

十、Django的文件上传

一.上传文件相关 请求头ContentType ContentType指的是请求体的编码类型,常见的类型共有3种: application/x-www-form-urlencoded 最常见的 POST 提交数据的方式了 浏览器的原生 form 表单,如果不设置?enctype?属性,那么最终就会以 默认格式application/x-www-form-urlencoded 方式提交数据,ajax默认也是这个 urlencoded是一种数据格式, 比如: username=yang&passwo

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

一.文件上传 1. 浏览器访问 http://127.0.0.1:8000/f1/ http://127.0.0.1:8000/f2/ 2. urls from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^f1/', views.f1), url(r'^f2/

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

前言 关于非input文件上传,点上传按钮后,这个弹出的windows的控件了,已经跳出三界之外了,不属于selenium的管辖范围(selenium不是万能的,只能操作web上元素).autoit工具处理windows的控件窗口是专业的,所以这个需借助AutoIt来解决了. 一.环境准备 1.可以autoit官网上下载,安装 http://www.autoitscript.com/site/ 2.下载到本地后傻瓜式安装,安装完之后在应用程序找到这个Autoit v3 3.AutoIt里面几个菜

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

前言 关于非input文件上传,点上传按钮后,这个弹出的windows的控件了,已经跳出三界之外了,不属于selenium的管辖范围(selenium不是万能的,只能操作web上元素).autoit工具处理windows的控件窗口是专业的,所以这个需借助AutoIt来解决了. 一.环境准备 1.可以autoit官网上下载,安装 http://www.autoitscript.com/site/ 2.下载到本地后傻瓜式安装,安装完之后在应用程序找到这个Autoit v3 3.AutoIt里面几个菜

django的文件上传&amp;JsonResponse的使用&amp;数据库的连接

1 request对象 method:请求方式 GET:get请求的参数(post请求,也可以携带参数) POST:post请求的参数(本质是从bdoy中取出来,放到里面了) COOKIES: META:字典(放着好多东西,前端传过来的,一定能从其中拿出来) body:post提交的数据 path:请求的路径,不带参数 request.get_full_path() 请求路径,带参数 session: user: FILES encoding:编码格式 is_ajax(): 2 HttpResp

Django普通文件上传

前端代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="/static/jquery-3.2.1.min.js"></script> <script src="/static/jquery

django 实现文件上传

创建项目与应用     django-admin.py startproject mysite cd mysite python manage.py startapp app01 打开mysite/mysite/settings.py文件,将app01应用添加进去: INSTALLED_APPS = [     'django.contrib.admin',     'django.contrib.auth',     'django.contrib.contenttypes',     'dj

Django处理文件上传File Uploads

HttpRequest.FILES 表单上传的文件对象存储在类字典对象request.FILES中,表单格式需为multipart/form-data <form enctype="multipart/form-data" method="post" action="/foo/"> <input type="file" name="image" /> request.FILES中的键

django 的文件上传

template html(模板文件): <form enctype="multipart/form-data" method="POST" action="/address/upload/"> <input type="file" name="file" /> <br /> <input type="submit" value="上传