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 相关文章推荐
Python获取服务器信息的最简单实现方法
Mar 05 Python
python实现登陆知乎获得个人收藏并保存为word文件
Mar 16 Python
用Python的SimPy库简化复杂的编程模型的介绍
Apr 13 Python
Python 使用os.remove删除文件夹时报错的解决方法
Jan 13 Python
Python正则抓取新闻标题和链接的方法示例
Apr 24 Python
Python使用pymysql小技巧
Jun 04 Python
Django如何自定义分页
Sep 25 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
Sep 26 Python
Python版中国省市经纬度
Feb 11 Python
Win 10下Anaconda虚拟环境的教程
May 18 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
Oct 23 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
Nov 30 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
Apache下禁止php文件被直接访问的解决方案
2013/04/25 PHP
PHP判断远程图片是否存在的几种方法
2014/05/04 PHP
经典PHP加密解密函数Authcode()修复版代码
2015/04/05 PHP
thinkphp命名空间用法实例详解
2015/12/30 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
2016/11/09 PHP
PHP 表单提交及处理表单数据详解及实例
2016/12/27 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
jquery下div 的resize事件示例代码
2014/03/09 Javascript
JQuery设置获取下拉菜单某个选项的值(比较全)
2014/08/05 Javascript
JavaScript控制table某列不显示的方法
2015/03/16 Javascript
jQuery实现鼠标划过修改样式的方法
2015/04/14 Javascript
jQuery地图map悬停显示省市代码分享
2015/08/20 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
2016/09/01 Javascript
JQuery PHP图片在线裁剪实例
2020/07/27 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
2016/12/13 Javascript
angularjs ui-router中路由的二级嵌套
2017/03/10 Javascript
NodeJS学习笔记之Module的简介
2017/03/24 NodeJs
Angular2使用Augury来调试Angular2程序
2017/05/21 Javascript
利用JS做网页特效_大图轮播(实例讲解)
2017/08/09 Javascript
微信小程序日期选择器实例代码
2018/07/18 Javascript
微信小程序实现随机验证码功能
2018/12/20 Javascript
Python+PIL实现支付宝AR红包
2018/02/09 Python
windows下python安装小白入门教程
2018/09/18 Python
对python数据切割归并算法的实例讲解
2018/12/12 Python
浅谈Pandas:Series和DataFrame间的算术元素
2018/12/22 Python
python深copy和浅copy区别对比解析
2019/12/26 Python
Python类和实例的属性机制原理详解
2020/03/21 Python
python实现npy格式文件转换为txt文件操作
2020/07/01 Python
python基于selenium爬取斗鱼弹幕
2021/02/20 Python
Easy Spirit官网:美国休闲鞋履中的代表品牌
2019/04/12 全球购物
管理科学大学生求职信
2013/11/13 职场文书
建筑人员岗位职责
2013/12/25 职场文书
小学生班会演讲稿
2014/01/09 职场文书
市场部业务员岗位职责
2014/04/02 职场文书
JavaScript组合继承详解
2021/11/07 Javascript
详解SQL的窗口函数
2022/04/21 Oracle