文件保存本地

view视图

  1. def update(request):
  2. if request.method =='GET':
  3. return render(request,'update.html')
  4. else:
  5. myFile = request.FILES.get("img")
  6. #上传的文件是一个对象
  7. print(myFile.name)
  8. print(myFile.size)
  9. f = open(myFile.name,'wb')
  10. for files in myFile.chunks():
  11. f.write(files)
  12. return render(request,'update.html')

前端

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <form action="update.html" method="post" enctype="multipart/form-data">
  9. {% csrf_token %}
  10. 文件上传:<input type="file" name="img">
  11. <input type="submit">
  12. </form>
  13.  
  14. </body>
  15. </html>

文件上传到数据库

首先 需要在setting中设置文件的存储路径

  1. #一般创建static文件
    MEDIA_ROOT = os.path.join(BASE_DIR,"static/...")
  1. #在models中创建数据库
  2. class Files(models.Model):
  3. photo_url = models.ImageField(
  4. upload_to='imgae'
  5. )
  6.  
  7. view视图
  1. 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上传文件

 

  1. #HTML中编辑JQ语句
  2. form action="update.html" method="post" enctype="multipart/form-data">
  3. {% csrf_token %}
  4. 头像<input type="file" name="touxiang" id="file">
  5. <br>
  6. <button id="btn">提交</button>
  7. </form>
  8. <script>
  9. $("#btn").click(function(){
  10. {#ajax上传文件的时候需要这个类型,它会将添加的键值对加工成formata的类型#}
  11. var formdata = new FormData();
  12. {##添加键值对的方法是append,注意写法,键和值之间使用逗号隔开#}
  13. formdata.append('file',$("#file")[0].files[0]);
  14. {#csrf_tocken#}
  15. formdata.append('csrfmiddlewaretoken',$('[name=csrfmiddlewaretoken]').val());
  16. console.log(formdata)
  17. $.ajax({
  18. 'url':'update.html',
  19. 'type':'post',
  20. 'data':formdata,
  21. {#不处理数据#}
  22. processData:false,
  23. contentType:false,
  24. success:function(arg){
  25. console.log(arg)
  26. }
  27. })
  28. })
  29. </script>
  1. #view中操作
  2. if request.method =='GET':
  3. return render(request,'update.html')
  4. else:
  5. # name = request.POST.get('uname')
  6. file = request.FILES.get('touxiang')
  7. file_name = file.name
  8. # 拼接文件路径
  9. # path = os.path.join('static','img',file_name)
  10. with open(file_name,'wb') as f:
  11. for i in file.chunks():
  12. f.write(i)
  13. return render(request, 'update.html')

  

Python Django文件上传的更多相关文章

  1. django文件上传、图片验证码、抽屉数据库设计

    1.Django文件上传之Form方式 settings.py, ALLOWED_HOSTS = ['*'] INSTALLED_APPS = [ 'django.contrib.admin', 'd ...

  2. python_way day21 Django文件上传Form方式提交,原生Ajax提交字符处啊,Django文件上传之原生Ajax方式、jQuery Ajax方式、iframe方式,Django验证码,抽屉示例,

    python_way day21 1.Django文件上传至Form方式 2.原生Ajax文件上传提交表单 使用原生Ajax好处:不依赖jquery,在发送一个很小的文件或者字符串的时候就可以用原生A ...

  3. Python Selenium 文件上传之Autoit

    今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python Selenium 文件上传之SendKeys 这种方法直接通过命令行执行脚本时没有问题,可以成功 ...

  4. Python Selenium 文件上传之SendKeys

    昨天写了Web 文件下载的ui自动化,下载之后,今天就要写web 文件上传的功能了. 当然从折腾了俩小时才上传成功.下面写一下自己操作的步骤 首先网上说的有很多方法 如 input 标签的最好做了,直 ...

  5. Python WebDriver 文件上传(二)

    今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python WebDriver 文件上传(一) 这种方法直接通过命令行执行脚本时没有问题,可以成功上传,但是 ...

  6. Python WebDriver 文件上传(一)

    昨天写了Web 文件下载的ui自动化,下载之后,今天就要写web 文件上传的功能了. 当然从折腾了俩小时才上传成功.下面写一下自己操作的步骤 首先网上说的有很多方法 如 input 标签的最好做了,直 ...

  7. Django文件上传下载与富文本编辑框

    django文件上传下载 上传 配置settings.py # 设定文件的访问路径,如:访问http://127.0.0.1:8000/media/就可以获取文件 MEDIA_URL = '/medi ...

  8. Python Web框架篇:Django文件上传

    上传方式: - Form表单上传文件 - Ajax上传文件 - 基于form表单和iframe自己实现ajax请求 1,创建项目 2,settings配置(注册app01,static路径等等这些)及 ...

  9. Python菜鸟之路:Django 文件上传的几种方式

    方式一:通过form表单中,html input 标签的“file”完成 # 前端代码uoload.html <form method="post" action=" ...

随机推荐

  1. coroutine - 示例

    分享流畅的python一书, coroutine 章节中的出租车仿真的例子. from collections import namedtuple import queue import random ...

  2. 如何查看SparkSQL 生成的抽象语法树?

    前言 在<Spark SQL内核剖析>书中4.3章节,谈到Catalyst体系中生成的抽象语法树的节点都是以Context来结尾,在ANLTR4以及生成的SqlBaseParser解析SQ ...

  3. JAVA ReentrantLock的使用

    源码如下 对比synchronized,synchronized使用时会显示的指定一个对象(方法为调用对象,代码块会需要对象作为参数),来获取一个对象的独占锁 而ReentrantLock可能就是使用 ...

  4. linux 删除文件 磁盘空间未释放

    具体情况就是:删除了一个超大文件后,发现磁盘空间没有变化 原因:有进程正在使用这个文件,虽然我们从文件系统的目录结构上解除链接(unlink),然而文件是被 打开的(有一个进程正在使用),那么进程将仍 ...

  5. React之props、state和render函数的关系

    1.当组件中的state或者props发生改变的的时候,render函数就会被重新执行 2.当父组件的render函数被运行时,它的子组件的render都将被重新运行一次 3.子组件作为父组件里的一个 ...

  6. 献给即将35岁的初学者,焦虑 or 出路?

    导言:“对抗职场“35 岁焦虑”,也许唯一的方法是比这个瞬息万变的商业社会跑得更快!” 一直以来,都有许多人说“程序员或测试员是个吃青春饭的职业”,甚至还有说“35 岁混不到管理就等于失业”的言论. ...

  7. MySQL命令随手记之alter

    修改表名 alter table 表名 rename 新表名; //修改table名 添加.删除.修改字段 alter table 表名 add [column] 列名 数据类型; //添加colum ...

  8. 西门子S7comm协议解析 —— 利用Wireshark对报文逐字节进行解析详细解析S7comm所含功能码以及UserData功能

    又一次成为懒蛋了,标题就这么改了改又是一篇新文章. 网上也有很多S7comm协议的解析,但还是如同我上一篇一样我只是做报文的解析对于S7comm的原理并进行阐述. 有些地方有错误的地方尽请大家指出,共 ...

  9. 常用MySQL操作

    常用MySQL操作 更改MySQL数据库root的密码 将绝对路径加入环境变量并设置开机启动 # PATH=$PATH:/usr/local/mysql/bin # echo "PATH=$ ...

  10. Http API触发小程序云函数案例

    1.创建云函数 在云开发中创建云函数(sum,调用需要两个参数:a.b): 2.invokeCloudFunction触发云函数 const request = require('request'); ...