Django实现文件上传和下载功能


Posted in Python onOctober 06, 2019

本文实例为大家分享了Django下完成文件上传和下载功能的具体代码,供大家参考,具体内容如下

一、文件上传

Views.py

def upload(request):
 if request.method == "POST": # 请求方法为POST时,进行处理
 myFile = request.FILES.get("myfile", None) # 获取上传的文件,如果没有文件,则默认为None
 if not myFile:
 return HttpResponse("no files for upload!")
 # destination=open(os.path.join('upload',myFile.name),'wb+')
 destination = open(
 os.path.join("你的文件存放地址", myFile.name),
 'wb+') # 打开特定的文件进行二进制的写操作
 for chunk in myFile.chunks(): # 分块写入文件
 destination.write(chunk)
 destination.close()
 return HttpResponse("upload over!")
 else:
 file_list = []
 files = os.listdir('D:\python\Salary management system\django\managementsystem\\file')
 for i in files:
 file_list.append(i)
 return render(request, 'upload.html', {'file_list': file_list})

urls.py

url(r'download/$',views.download),

upload.html

<div class="container-fluid">
 <div class="row">
 <form enctype="multipart/form-data" action="/upload_file/" method="POST">
 <input type="file" name="myfile"/>
 <br/>
 <input type="submit" value="upload"/>
 </form>
 </div>
</div>

 页面显示

 Django实现文件上传和下载功能

二、文件下载

Views.py

from django.http import HttpResponse,StreamingHttpResponse
from django.conf import settings
 
def download(request):
 filename = request.GET.get('file')
 filepath = os.path.join(settings.MEDIA_ROOT, filename)
 fp = open(filepath, 'rb')
 response = StreamingHttpResponse(fp)
 # response = FileResponse(fp)
 response['Content-Type'] = 'application/octet-stream'
 response['Content-Disposition'] = 'attachment;filename="%s"' % filename
 return response
 fp.close()

HttpResponse会直接使用迭代器对象,将迭代器对象的内容存储城字符串,然后返回给客户端,同时释放内存。可以当文件变大看出这是一个非常耗费时间和内存的过程。

而StreamingHttpResponse是将文件内容进行流式传输,StreamingHttpResponse在官方文档的解释是:

The StreamingHttpResponse class is used to stream a response from Django to the browser. You might want to do this if generating the response takes too long or uses too much memory.

这是一种非常省时省内存的方法。但是因为StreamingHttpResponse的文件传输过程持续在整个response的过程中,所以这有可能会降低服务器的性能。

urls.py

url(r'^upload',views.upload),

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python3.x和Python2.x的区别介绍
Feb 12 Python
python实现发送邮件及附件功能
Mar 02 Python
Python3 适合初学者学习的银行账户登录系统实例
Aug 08 Python
简单了解python模块概念
Jan 11 Python
python使用tkinter实现简单计算器
Jan 30 Python
用python简单实现mysql数据同步到ElasticSearch的教程
May 30 Python
Python爬虫小技巧之伪造随机的User-Agent
Sep 13 Python
如何更优雅地写python代码
Jul 02 Python
keras:model.compile损失函数的用法
Jul 01 Python
Django用户认证系统如何实现自定义
Nov 12 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
Jan 24 Python
python_tkinter弹出对话框创建
Mar 20 Python
Django文件上传与下载(FileFlid)
Oct 06 #Python
Django实现文件上传下载
Oct 06 #Python
python编写猜数字小游戏
Oct 06 #Python
python实现猜数字游戏
Mar 25 #Python
python实现机器人卡牌
Oct 06 #Python
Django实现文件上传下载功能
Oct 06 #Python
使用turtle绘制五角星、分形树
Oct 06 #Python
You might like
php递归函数中使用return的注意事项
2014/01/17 PHP
php+ajax实现无刷新数据分页的办法
2015/11/02 PHP
可实现多表单提交的javascript函数
2007/08/01 Javascript
jquery入门—选择器实现隔行变色实例代码
2013/01/04 Javascript
JS中的this变量的使用介绍
2013/10/21 Javascript
jsPDF生成pdf后在网页展示实例
2014/01/16 Javascript
js防止DIV布局滚动时闪动的解决方法
2014/10/30 Javascript
node.js中实现同步操作的3种实现方法
2014/12/05 Javascript
node.js中的buffer.write方法使用说明
2014/12/10 Javascript
关于js里的this关键字的理解
2015/08/17 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
2016/05/12 Javascript
理解javascript中的Function.prototype.bind的方法
2017/02/03 Javascript
学习使用Bootstrap输入框、导航、分页等常用组件
2017/05/11 Javascript
JS使用tween.js动画库实现轮播图并且有切换功能
2018/07/17 Javascript
JS调用安卓手机摄像头扫描二维码
2018/10/16 Javascript
JavaScript碰撞检测原理及其实现代码
2020/03/12 Javascript
微信小程序文章列表功能完整实例
2020/06/03 Javascript
Python重新引入被覆盖的自带function
2014/07/16 Python
Python实现简单过滤文本段的方法
2017/05/24 Python
Python实现字符串格式化输出的方法详解
2017/09/20 Python
详解Python在七牛云平台的应用(一)
2017/12/05 Python
Python使用Matplotlib实现雨点图动画效果的方法
2017/12/23 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
Pytorch实现各种2d卷积示例
2019/12/30 Python
基于Python正确读取资源文件
2020/09/14 Python
详解Python调用系统命令的六种方法
2021/01/28 Python
美国美发品牌:Bumble and Bumble
2016/10/08 全球购物
JD Sports德国官网:英国领先的运动鞋和运动服饰零售商
2018/02/26 全球购物
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
英语自荐信常用语句
2013/12/13 职场文书
办公室助理岗位职责
2013/12/25 职场文书
白酒营销策划方案
2014/08/17 职场文书
教师节横幅标语
2014/10/08 职场文书
深度学习tensorflow基础mnist
2021/04/14 Python
Go语言基础切片的创建及初始化示例详解
2021/11/17 Golang
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
2022/08/14 MySQL