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配置mysql的教程(推荐)
Oct 13 Python
Sublime开发python程序的示例代码
Jan 24 Python
python将txt等文件中的数据读为numpy数组的方法
Dec 22 Python
python 多个参数不为空校验方法
Feb 14 Python
python实现弹跳小球
May 13 Python
Django如何使用第三方服务发送电子邮件
Aug 14 Python
python批量处理txt文件的实例代码
Jan 13 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
Nov 24 Python
django中cookiecutter的使用教程
Dec 03 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
Feb 24 Python
python-opencv 中值滤波{cv2.medianBlur(src, ksize)}的用法
Jun 05 Python
一篇文章弄懂Python中的内建函数
Aug 07 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垃圾回收机制简单说明
2010/07/22 PHP
PHP实现的日历功能示例
2018/09/01 PHP
js数组的操作详解
2013/03/27 Javascript
php跨域调用json的例子
2013/11/13 Javascript
jquery div拖动效果示例代码
2013/12/08 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
JS倒计时代码汇总
2014/11/25 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
2015/03/21 Javascript
简介JavaScript中的getSeconds()方法的使用
2015/06/10 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
JS中静态页面实现微信分享功能
2017/02/06 Javascript
记一次vue-webpack项目优化实践详解
2019/02/17 Javascript
vue项目打包后上传至GitHub并实现github-pages的预览
2019/05/06 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
2019/11/01 Javascript
微信小程序实现滚动加载更多的代码
2019/12/06 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
2020/04/01 jQuery
javascript实现随机抽奖功能
2020/12/30 Javascript
[01:55]2014DOTA2国际邀请赛 BBC正赛第一天总结
2014/07/10 DOTA
[05:08]第一届“网鱼杯”DOTA2比赛精彩集锦
2014/09/05 DOTA
高性能web服务器框架Tornado简单实现restful接口及开发实例
2014/07/16 Python
Python入门篇之文件
2014/10/20 Python
线程和进程的区别及Python代码实例
2015/02/04 Python
Python字典的核心底层原理讲解
2019/01/24 Python
python 进程间数据共享multiProcess.Manger实现解析
2019/09/23 Python
Canvas多边形绘制的实现方法
2019/08/05 HTML / CSS
攀岩、滑雪、徒步旅行装备:Black Diamond Equipment
2019/08/16 全球购物
C++是不是类型安全的
2014/02/18 面试题
医学生求职自荐信
2013/10/25 职场文书
幼儿园母亲节活动方案
2014/03/10 职场文书
环保倡议书范文
2014/05/12 职场文书
2015年销售工作总结范文
2015/03/30 职场文书
关于食品安全的演讲稿范文(三篇)
2019/10/21 职场文书
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript
SQL IDENTITY_INSERT作用案例详解
2021/08/23 MySQL
win10电脑右下角输入法图标不见了?Win10右下角不显示输入法的解决方法
2022/07/23 数码科技