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 fileinput模块使用实例
May 28 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
Nov 24 Python
Python实现矩阵转置的方法分析
Nov 24 Python
django 多数据库配置教程
May 30 Python
Python matplotlib画图与中文设置操作实例分析
Apr 23 Python
利用python在大量数据文件下删除某一行的例子
Aug 21 Python
TensorFlow设置日志级别的几种方式小结
Feb 04 Python
不到20行实现Python代码即可制作精美证件照
Apr 24 Python
django ORM之values和annotate使用详解
May 19 Python
python中Ansible模块的Playbook的具体使用
May 28 Python
六种酷炫Python运行进度条效果的实现代码
Jul 17 Python
利用python做表格数据处理
Apr 13 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出错界面
2006/10/09 PHP
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
php中的一些数组排序方法分享
2012/07/20 PHP
PHP手机号码归属地查询代码(API接口/mysql)
2012/09/04 PHP
关于laravel 子查询 &amp; join的使用
2019/10/16 PHP
JQuery 常用方法和事件详细介绍
2013/04/18 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
2014/06/22 Javascript
javascript制作的cookie封装及使用指南
2015/01/02 Javascript
jquery实现的简单二级菜单效果代码
2015/09/22 Javascript
12个超实用的JQuery代码片段
2015/11/02 Javascript
实例讲解JavaScript中的this指向错误解决方法
2016/06/13 Javascript
JS实现iframe自适应高度的方法示例
2017/01/07 Javascript
Angularjs自定义指令实现三级联动 选择地理位置
2017/02/13 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
Angular2数据绑定详解
2017/04/18 Javascript
js 获取json数组里面数组的长度实例
2017/10/31 Javascript
VS Code转换大小写、修改选中文字或代码颜色的方法
2017/12/15 Javascript
layui的table中显示图片方法
2018/08/17 Javascript
详解在React项目中安装并使用Less(用法总结)
2019/03/18 Javascript
详解小程序开发经验:多页面数据同步
2019/05/18 Javascript
详解React路由传参方法汇总记录
2020/11/29 Javascript
[47:10]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第二场 12.16
2020/12/18 DOTA
python网络编程学习笔记(二):socket建立网络客户端
2014/06/09 Python
Django中URL视图函数的一些高级概念介绍
2015/07/20 Python
基于python 二维数组及画图的实例详解
2018/04/03 Python
Python实现字符串中某个字母的替代功能
2019/10/21 Python
python pygame实现挡板弹球游戏
2019/11/25 Python
tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现
2020/02/06 Python
Python基于pyecharts实现关联图绘制
2020/03/27 Python
python读取hdfs并返回dataframe教程
2020/06/05 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
Stuart Weitzman欧盟:美国奢华鞋履品牌
2017/05/24 全球购物
介绍一下MD5加密算法
2016/11/12 面试题
ShellScript面试题一则-ShellScript编程
2014/06/24 面试题
教师实习自我鉴定
2013/12/13 职场文书
pandas求平均数和中位数的方法实例
2021/08/04 Python