Python Django文件上传
文件保存本地
view视图
- def update(request):
- if request.method =='GET':
- return render(request,'update.html')
- else:
- myFile = request.FILES.get("img")
- #上传的文件是一个对象
- print(myFile.name)
- print(myFile.size)
- f = open(myFile.name,'wb')
- for files in myFile.chunks():
- f.write(files)
- return render(request,'update.html')
前端
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- </head>
- <body>
- <form action="update.html" method="post" enctype="multipart/form-data">
- {% csrf_token %}
- 文件上传:<input type="file" name="img">
- <input type="submit">
- </form>
- </body>
- </html>
文件上传到数据库
首先 需要在setting中设置文件的存储路径
- #一般创建static文件
MEDIA_ROOT = os.path.join(BASE_DIR,"static/...")
- #在models中创建数据库
- class Files(models.Model):
- photo_url = models.ImageField(
- upload_to='imgae'
- )
- view视图
- def files_ulr(request):
if request.method =='GET':
return render(request,'photo.html')
else:
myFile = request.FILES.get('img')
photo_url = models.Files.objects.create(photo_url=myFile)
return HttpResponse("ok")
通过Ajax上传文件
- #HTML中编辑JQ语句
- form action="update.html" method="post" enctype="multipart/form-data">
- {% csrf_token %}
- 头像<input type="file" name="touxiang" id="file">
- <br>
- <button id="btn">提交</button>
- </form>
- <script>
- $("#btn").click(function(){
- {#ajax上传文件的时候需要这个类型,它会将添加的键值对加工成formata的类型#}
- var formdata = new FormData();
- {##添加键值对的方法是append,注意写法,键和值之间使用逗号隔开#}
- formdata.append('file',$("#file")[0].files[0]);
- {#csrf_tocken#}
- formdata.append('csrfmiddlewaretoken',$('[name=csrfmiddlewaretoken]').val());
- console.log(formdata)
- $.ajax({
- 'url':'update.html',
- 'type':'post',
- 'data':formdata,
- {#不处理数据#}
- processData:false,
- contentType:false,
- success:function(arg){
- console.log(arg)
- }
- })
- })
- </script>
- #view中操作
- if request.method =='GET':
- return render(request,'update.html')
- else:
- # name = request.POST.get('uname')
- file = request.FILES.get('touxiang')
- file_name = file.name
- # 拼接文件路径
- # path = os.path.join('static','img',file_name)
- with open(file_name,'wb') as f:
- for i in file.chunks():
- f.write(i)
- return render(request, 'update.html')
Python Django文件上传的更多相关文章
- django文件上传、图片验证码、抽屉数据库设计
1.Django文件上传之Form方式 settings.py, ALLOWED_HOSTS = ['*'] INSTALLED_APPS = [ 'django.contrib.admin', 'd ...
- python_way day21 Django文件上传Form方式提交,原生Ajax提交字符处啊,Django文件上传之原生Ajax方式、jQuery Ajax方式、iframe方式,Django验证码,抽屉示例,
python_way day21 1.Django文件上传至Form方式 2.原生Ajax文件上传提交表单 使用原生Ajax好处:不依赖jquery,在发送一个很小的文件或者字符串的时候就可以用原生A ...
- Python Selenium 文件上传之Autoit
今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python Selenium 文件上传之SendKeys 这种方法直接通过命令行执行脚本时没有问题,可以成功 ...
- Python Selenium 文件上传之SendKeys
昨天写了Web 文件下载的ui自动化,下载之后,今天就要写web 文件上传的功能了. 当然从折腾了俩小时才上传成功.下面写一下自己操作的步骤 首先网上说的有很多方法 如 input 标签的最好做了,直 ...
- Python WebDriver 文件上传(二)
今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python WebDriver 文件上传(一) 这种方法直接通过命令行执行脚本时没有问题,可以成功上传,但是 ...
- Python WebDriver 文件上传(一)
昨天写了Web 文件下载的ui自动化,下载之后,今天就要写web 文件上传的功能了. 当然从折腾了俩小时才上传成功.下面写一下自己操作的步骤 首先网上说的有很多方法 如 input 标签的最好做了,直 ...
- Django文件上传下载与富文本编辑框
django文件上传下载 上传 配置settings.py # 设定文件的访问路径,如:访问http://127.0.0.1:8000/media/就可以获取文件 MEDIA_URL = '/medi ...
- Python Web框架篇:Django文件上传
上传方式: - Form表单上传文件 - Ajax上传文件 - 基于form表单和iframe自己实现ajax请求 1,创建项目 2,settings配置(注册app01,static路径等等这些)及 ...
- Python菜鸟之路:Django 文件上传的几种方式
方式一:通过form表单中,html input 标签的“file”完成 # 前端代码uoload.html <form method="post" action=" ...
随机推荐
- coroutine - 示例
分享流畅的python一书, coroutine 章节中的出租车仿真的例子. from collections import namedtuple import queue import random ...
- 如何查看SparkSQL 生成的抽象语法树?
前言 在<Spark SQL内核剖析>书中4.3章节,谈到Catalyst体系中生成的抽象语法树的节点都是以Context来结尾,在ANLTR4以及生成的SqlBaseParser解析SQ ...
- JAVA ReentrantLock的使用
源码如下 对比synchronized,synchronized使用时会显示的指定一个对象(方法为调用对象,代码块会需要对象作为参数),来获取一个对象的独占锁 而ReentrantLock可能就是使用 ...
- linux 删除文件 磁盘空间未释放
具体情况就是:删除了一个超大文件后,发现磁盘空间没有变化 原因:有进程正在使用这个文件,虽然我们从文件系统的目录结构上解除链接(unlink),然而文件是被 打开的(有一个进程正在使用),那么进程将仍 ...
- React之props、state和render函数的关系
1.当组件中的state或者props发生改变的的时候,render函数就会被重新执行 2.当父组件的render函数被运行时,它的子组件的render都将被重新运行一次 3.子组件作为父组件里的一个 ...
- 献给即将35岁的初学者,焦虑 or 出路?
导言:“对抗职场“35 岁焦虑”,也许唯一的方法是比这个瞬息万变的商业社会跑得更快!” 一直以来,都有许多人说“程序员或测试员是个吃青春饭的职业”,甚至还有说“35 岁混不到管理就等于失业”的言论. ...
- MySQL命令随手记之alter
修改表名 alter table 表名 rename 新表名; //修改table名 添加.删除.修改字段 alter table 表名 add [column] 列名 数据类型; //添加colum ...
- 西门子S7comm协议解析 —— 利用Wireshark对报文逐字节进行解析详细解析S7comm所含功能码以及UserData功能
又一次成为懒蛋了,标题就这么改了改又是一篇新文章. 网上也有很多S7comm协议的解析,但还是如同我上一篇一样我只是做报文的解析对于S7comm的原理并进行阐述. 有些地方有错误的地方尽请大家指出,共 ...
- 常用MySQL操作
常用MySQL操作 更改MySQL数据库root的密码 将绝对路径加入环境变量并设置开机启动 # PATH=$PATH:/usr/local/mysql/bin # echo "PATH=$ ...
- Http API触发小程序云函数案例
1.创建云函数 在云开发中创建云函数(sum,调用需要两个参数:a.b): 2.invokeCloudFunction触发云函数 const request = require('request'); ...